asp.net core系列 70 即时通迅-WebSocket+Redis发布订阅 – Python量化投资

asp.net core系列 70 即时通迅-WebSocket+Redis发布订阅

一.概述 在asp.net core 中可以用WebSocket 或asp.net core SignalR来开发即时通迅。在项目中由于开发前后端分离,对于SignalR前端技术人员不想依赖juqery和SignalR.js包,后端确定使用WebSocket 来实现。对于asp.net core有自带的app.UseWebSockets()中间件,但是使用IIs做为web代理服务器时,需要在windows系统添加程序iis配置websocket才能使用websocket通讯。于是项目引用了一个开源包Fleck。 Fleck是对C#Websocket的实现,程序内部使用了System.Net.Sockets类来实现Websocket,不依赖于任何目标框架。 Fleck使用介绍 : https://github.com/statianzo/Fleck 下面是msdn文档原话: 对于大多数应用程序,我们建议使用 SignalR,而不是原始 Websocket。 SignalR 可为 Websocket 不可用的环境提供传输回退。 它还可提供简单的远程过程调用应用模型。 并且在大多数情况下,与使用原始 Websocket 相比,SignalR 没有显著的性能缺点。 WebSocket客户端支持: 浏览器 支持情况 Chrome Chrome version 4+ 支持 Firefox Firefox version 5+ 支持 IE IE version 10+ 支持 Safari IOS 5+ 支持 Android Brower Android 4.5+ 支持 二.项目中即时通迅实现架构 在我业务项目中实现的流程是:第三方接口发送数据过来,使用redis进行发布消息, 在web端进行消息订阅, 把订阅的消息通过websocket发送到前端站点,前端界面进行局部数据刷新展示,已解决前端即时消息的展示。 三. 项目实现 3.1相关包 (1) 发布订阅redis包:Install-Package StackExchange.Redis -Version 2.0.601 (2) websocket引用 Fleck 包。Install-Package Fleck -Version 1.1.0 3.2 fleck案例 关于fleck的websocket的参考如下: https://github.com/statianzo/Fleck/tree/master/src/Samples/ConsoleApp 3.3 项目中演示效果 (1) 使用web来做websocket宿主,websocket地址为:ws://127.0.0.1:8181,如下所示websocket服务已启动 (2) 启动前端界面,下图可以看到websocket已连接 前端页面连接websocket服务关键代码: window.ws = new wsImpl(‘ws://127.0.0.1:8181’,”FootballGoalScore”);   具体参考fleck的websocket示例。 (3) 控制台程序使用redis模拟发布信息, web端redis订阅消息,再通过websocket服务推送消息到前端页面,通过下图可以看到消息已即时传到 public void FootballScore(IWebSocketConnection websocke)
{ // redis先订阅消息 _subscriber.Subscribe( ” queue2 ” , (msg) => { // websocket服务推送消息 websocke.Send(msg);
_lLogger.Debug( ” 消息已发送! ” );
}); 下面是模拟第三方接口消息达到后,使用redis来发布消息,发布后web端redis自动订阅。 static void Main( string [] args)
{
ISubscriber subscriber = new GFRedisSubscriber(); // 足球比分 subscriber.Publish( ” queue2 ” , ” 1:0 ” ); // 即时欧指 subscriber.Publish( ” queue1 ” , ” 1.69|3.30|3.78 ” );
Console.ReadLine();
} 参考文献: ASP.NET Core 中的 WebSocket 支持 ASP.NET Core SignalR 简介 WebSocket资料https://www.cnblogs.com/MrHSR/p/11323724.html

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论