后端使用 AspNet.SignalR,前端要支持 web 和小程序的问题。懂 SignalR 的进来瞧瞧呀!

2020-04-15 17:54:28 +08:00
 Visitor233

注意:是 AspNet.SignalR,不是带 Core 的那个

起因:经理一开始跟我说的是,看看小程序能否支持 SignalR (并未提及 Web ),我在小程序端用 Websocket+心跳包实现了简单的信息交互。

经过:昨天经理自己写了个 Web 页尝试连接我后端的 SignalR,因为我重写了 OnConnected 方法,他没传参,报错后,我也知道了是参数问题,跟他说明就没问题了。可现在还要再支持 Web 端!

问题点:正常的 SignalR 前端都是 web,因为自带的 js 处理了很多问题,你只管发,接收信息就行。但因为要支持小程序 Websocket,我重写了 OnConnected,并且将用户连接加到了自己创建的线程字典中,还配上了心跳计时的方法。这样的话,web 端用户连接也加到了字典中,但 js 中的心跳就不知道会怎么样了,运行后也没出现未 ping,SignalR 自行处理断开连接操作。我尝试着加上心跳请求自己的清除计时器方法,并未与小程序那边产生冲突。

结果:这已经涉及我的知识盲区,希望懂 SignalR 的大佬在评论中指点一番,我目前的操作有没有什么问题,我该如何处理 web 与小程序的用户连接管理。

先在此谢过各位大佬

2078 次点击
所在节点    .NET
1 条回复
forgottencoast
2020-04-19 16:37:02 +08:00
我没用过 SignalR,我瞎说一通。
以我对 Asp.Net MVC 的了解,你的用户连接管理应该可以通过不同级别的扩展点应用在某些 Hub 。
所以我觉得你可以把面向 Web 和面向小程序的 Hub 分开,代码重用可以通过别的方式来实现。
或者你在重写的 OnConnected 方法识别来源的不同,分别处理。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX