ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能。 实时 web 功能使服务器端代码可以立即将内容推送到客户端。
1.引入方式:import * as signalR from '@microsoft/signalr'
或 const signalR = require("@microsoft/signalr");
此时web端正常连接,app出现报错:
ReferenceError: require is not defined
2.引入方式: const signalR = require('../../common/signalr.js')
此时web端正常连接,app出现报错:
TypeError: Cannot read property 'call' of undefined
3.使用uniapp提供的"renderjs",引入方式使用如下:
方式一:const signalR = require("@microsoft/signalr");
方式二:import * as signalR from '@microsoft/signalr'
方式三: const signalR = require('../../common/signalr.js')
此时web端和app端均可正常连接, 建议使用方式三,因为其他方式需要npm安装@microsoft/signal,影响打包速度
总结(原因查找思路):
1.插件版本
2.引入方式
3.手机需要连接同ip的网络
在后测试中又发现新的问题,renderJs中的data与其他script的data是相互隔离的,在render中无法直接拿到其他script中data数据(如使用this.severIp会报undefined)
解决办法:通过uni-app 与 renderjs 通信拿到数据 参考:blog.csdn.net/M_Eve/artic…
成功实现数据通信
后续开发中遇到的问题:
1.如何在app所有界面都实时监听消息推送?
可以全局注册公共组件,公共组件内建立长连接
2.公共组件如何全局引入,不用在每个页面的template中写入组件?在uniapp中没有像pc端那种公共头部html,且无法操作dom
目前还没完美的解决方案,我只能在需要用到组件的页面进行写入,后续可关注论坛uniapp怎么设置所有页面共用的组件 - DCloud问答