Events 如何通过websocket向客户端发送事件火灾数据
几天前我遇到了一个我似乎无法解决的问题。这就是为什么我把它贴在StackOverflow上 我正在运行一个.NET核心网站,可以在后台运行任务。此类任务有3个事件(未完成、已启动、任务进度)。我需要的是,如果这些事件发生,他将向连接的客户端发送数据。为简单起见,我想返回“事件触发”字符串 我目前所做的工作如下:Events 如何通过websocket向客户端发送事件火灾数据,events,asp.net-core,websocket,Events,Asp.net Core,Websocket,几天前我遇到了一个我似乎无法解决的问题。这就是为什么我把它贴在StackOverflow上 我正在运行一个.NET核心网站,可以在后台运行任务。此类任务有3个事件(未完成、已启动、任务进度)。我需要的是,如果这些事件发生,他将向连接的客户端发送数据。为简单起见,我想返回“事件触发”字符串 我目前所做的工作如下: 将app.UseWebSockets()添加到我的startup.cs文件中 在管道中添加了一个新函数以捕获websocket调用 app.Use(async (context, ne
- 将
添加到我的startup.cs文件中app.UseWebSockets()
- 在管道中添加了一个新函数以捕获websocket调用
app.Use(async (context, next) => { if (context.Request.Path == "/socket") { if (context.WebSockets.IsWebSocketRequest) { var webSocket = await context.WebSockets.AcceptWebSocketAsync(); //HERE IS MY PROBLEM } else { context.Response.StatusCode = 400; } } else { await next(); } });
- 我创建了一个
类,它在触发时接收所有3个事件SocketListener
private void _taskManager_TaskExecuting(object sender, GenericEventArgs<IScheduledTaskWorker> e) { SendData(); } private void _taskManager_TaskCompleted(object sender, TaskCompletionEventArgs e) { SendData(); } private void Argument_TaskProgress(object sender, GenericEventArgs<double> e) { SendData(); }
private void\u taskManager\u TaskExecuting(对象发送方,GenericEventArgs e) { SendData(); } 私有void\u taskManager\u TaskCompleted(对象发送方,TaskCompletionEventArgs e) { SendData(); } 私有无效参数\u TaskProgress(对象发送方,GenericEventArgs e) { SendData(); }
SocketListener
类需要知道这些连接,并通过WebSocket连接将数据发送回
“SendData()”函数需要检查打开的连接,并向所有连接发送“事件触发”字符串
离开页面导航时,还需要关闭连接。我想我可以通过一些angular NavigationStart事件来管理它,然后用关闭消息调用socket api
我在互联网上搜索了一个很好的解决方案,但是大部分的blogpost/tutorials/。。。正在谈论双向通信(聊天程序等)
有人知道我如何解决这个问题吗?如果需要更多信息,我会告诉我
提前谢谢 Helo Reggi
我已经开源了一个WebSocket应用程序,它是我在.NETCore中构建的
我构建它是为了处理一般消息,而不仅仅是关注聊天
我的想法是在客户端(网页)和websocket中使用双向通信来执行任何类型的任务
WebSocket通信的工作原理与您在回答问题时所说的略有不同,但我编写的代码将是一个很好的指南
您希望对SendData执行的操作类似于我创建的控制器NotificationController上的“NotifyAllConnectedSockets”方法
请看一下它是否符合你的要求
后端-
前端-
注:这是一个工作在progres,无论是前端和后端
请随便问任何问题
向您致意您对WebSocketConnectionManager的想法是一个非常好的想法!我会尝试一下你的代码!Í只是想提醒你,如果你认为我的答案合适,就投票支持我。谢谢你,请随意提问。如果你知道答案的话,把答案贴在这里(至少是概念)会很好solution@MehdiDehghani你看过GtiHub回购协议了吗?你不觉得我给出的答案不够吗?提前谢谢。@AlanSilva实际上我用另一种方法解决了问题,是的,我检查了repo,分享完整的源代码很好,但我认为分享与问题相关的主要部分很好,因此读者可以决定是否继续阅读完整的源代码(完整的源代码是否与问题相关),祝你好运