注意:是 AspNet.SignalR,不是带 Core 的那个
起因:经理一开始跟我说的是,看看小程序能否支持 SignalR (并未提及 Web ),我在小程序端用 Websocket+心跳包实现了简单的信息交互。
经过:昨天经理自己写了个 Web 页尝试连接我后端的 SignalR,因为我重写了 OnConnected 方法,他没传参,报错后,我也知道了是参数问题,跟他说明就没问题了。可现在还要再支持 Web 端!
问题点:正常的 SignalR 前端都是 web,因为自带的 js 处理了很多问题,你只管发,接收信息就行。但因为要支持小程序 Websocket,我重写了 OnConnected,并且将用户连接加到了自己创建的线程字典中,还配上了心跳计时的方法。这样的话,web 端用户连接也加到了字典中,但 js 中的心跳就不知道会怎么样了,运行后也没出现未 ping,SignalR 自行处理断开连接操作。我尝试着加上心跳请求自己的清除计时器方法,并未与小程序那边产生冲突。
结果:这已经涉及我的知识盲区,希望懂 SignalR 的大佬在评论中指点一番,我目前的操作有没有什么问题,我该如何处理 web 与小程序的用户连接管理。
先在此谢过各位大佬
1
forgottencoast 2020-04-19 16:37:02 +08:00
我没用过 SignalR,我瞎说一通。
以我对 Asp.Net MVC 的了解,你的用户连接管理应该可以通过不同级别的扩展点应用在某些 Hub 。 所以我觉得你可以把面向 Web 和面向小程序的 Hub 分开,代码重用可以通过别的方式来实现。 或者你在重写的 OnConnected 方法识别来源的不同,分别处理。 |