首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向多个netcore客户端应用程序广播消息的最佳方式是什么?

向多个netcore客户端应用程序广播消息的最佳方式是什么?
EN

Stack Overflow用户
提问于 2019-04-18 05:17:30
回答 2查看 1.8K关注 0票数 2

我需要将json消息同时发送到同一网络中的1000个dotnet核心应用程序。目前,我将rest web api与自托管kestrel服务器一起使用,我问自己这是不是最好的解决方案。是否存在用于dotnet核心应用程序或其他解决方案的自托管消息代理?

EN

回答 2

Stack Overflow用户

发布于 2019-04-18 05:50:25

您可以将Service Bus与Topic一起使用。您可以将您的消息发送到一个主题,并向该主题订阅N个应用程序以接收消息。

每个应用程序都可以在topic下拥有自己的订阅。找到更多关于如何创建主题和订阅here的信息。

您可以使用Service Bus Explorer进行本地调试并查看消息。

票数 1
EN

Stack Overflow用户

发布于 2019-04-20 21:05:36

我会选择signalR

定义集线器

代码语言:javascript
运行
复制
using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRChat.Hubs
{
    public class ChatHub : Hub
    {
       public async Task SendMessage(string user, string message)
       {
          await Clients.All.SendAsync("ReceiveMessage", user, message);
       }
    }
}

StartUp中添加SignalR

代码语言:javascript
运行
复制
 services.AddSignalR();

 app.UseSignalR(routes =>
 {
      routes.MapHub<ChatHub>("/chatHub");
 });     

然后定义客户端(别忘了包含js库signalr.js)

代码语言:javascript
运行
复制
"use strict";

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

//Disable send button until connection is established
document.getElementById("sendButton").disabled = true;

connection.on("ReceiveMessage", function (user, message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    var encodedMsg = user + " says " + msg;
    var li = document.createElement("li");
    li.textContent = encodedMsg;
    document.getElementById("messagesList").appendChild(li);
});

connection.start().then(function(){
    document.getElementById("sendButton").disabled = false;
}).catch(function (err) {
    return console.error(err.toString());
});

document.getElementById("sendButton").addEventListener("click", function (event) {
    var user = document.getElementById("userInput").value;
    var message = document.getElementById("messageInput").value;
    connection.invoke("SendMessage", user, message).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();
});

SendMessage在集线器中定义为方法,服务器将侦听它。ReceiveMessage是客户端的监听器,用于显示服务器发送的内容。

所有来自signalR documentation的代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55736100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档