• uniapp使用@microsoft/signalr(报错“ReferenceError: require is not defined“)


    后台老哥要用微软的signalr,总结了一些经验和问题

    引入方法

    1、npm

    npm i @microsoft/signalr

    2、下载他的js或者cdn

    
    
    • 1

    uniapp中,h5是正常的,运行到App会报ReferenceError: require is not defined
    在这里插入图片描述
    可以使用renderjs

    用法不想看可以直接复制

    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    注:可以直接新建一个script 标签,放在原页面script 标签的下面,像这样。
    在这里插入图片描述

    顺道写下使用方法 signalr文档,不太友好

    注:在renderjs中,uni的东西都不可以使用
    先引入。或者使用上面那种引入

    import {
    		HubConnectionBuilder
    	} from "@microsoft/signalr";
    
    • 1
    • 2
    • 3

    建立连接
    withAutomaticReconnect()这个是自动断线重连,就简单测试了一下是有用的所以不需要自己写心跳。

    // 建立连接
    			this.connection = new HubConnectionBuilder()
    				.withUrl(url) // 此处填服务器地址
    				// .configureLogging(signalR.LogLevel.Information)
    				.withAutomaticReconnect()
    				.build();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    开始连接
    有成功和失败的回调

    this.connection.start()
      .then(() => {
        console.log('Connection established.');
      })
      .catch((error) => {
        console.error('Error connecting to SignalR server: ', error);
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    调用SignalR服务器端的方法
    第一个是方法名称,后面具体参数看后台

    this.connection.invoke('serverMethod', data)
      .then((response) => {
        console.log('Received response from SignalR server: ', response);
      })
      .catch((error) => {
        console.error('Error calling server method: ', error);
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    接收服务器返回值
    通过on来接收,第一个是方法名称

    this.connection.on("ReceiveMessage",(res)=>{
    	
    })
    
    • 1
    • 2
    • 3

    具体推送可以写在上面,推送文档 plus.push
    注:需要在打包的时候勾选uni.push

    let content = JSON.parse(message).name +
    							'有一条新的危急值消息!';
    						let options = {
    							"cover": false,
    							"when": new Date(),
    							'title': "危急值"
    						};
    						let body = {
    							'id': 'id',
    							'key': "key"
    						}
    						// let payload = JSON.stringify(body);
    						plus.push.createMessage(content, '', options);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    腾讯会议对接日记——JWT Tocken使用方法
    Paddle炼丹炉炸了Unexpected BUS error encountered in DataLoader worker
    高级深入--day29
    循环神经网络
    关于 axios 是什么?以及怎么用?
    Docker 一键安装Confluence(已支持最新版本)
    踩坑List.addAll抛出UnsupportedOperationException
    怎么制作精美的公众号文章?教你几招
    【C++】泛型编程 ⑪ ( 类模板的运算符重载 - 函数实现 写在类外部的不同的 .h 头文件和 .cpp 代码中 )
    第1次 更多的bash shell命令
  • 原文地址:https://blog.csdn.net/qq_43371595/article/details/132734575