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

Tcp 向多个netcore客户端应用程序广播消息的最佳方式是什么?,tcp,websocket,.net-core,asp.net-core-webapi,.net-standard,Tcp,Websocket,.net Core,Asp.net Core Webapi,.net Standard,我需要将json消息同时发送到同一网络中的1000个dotnet核心应用程序。目前我使用RESTWebAPI和自托管kestrel服务器,我问我这是否是最好的解决方案。是否存在用于dotnet核心应用程序的自托管消息代理或其他解决方案?您可以使用带有主题的服务总线。您可以将消息发送到一个主题,然后向该主题订阅一个应用程序以接收消息 每个应用程序都可以在主题下拥有自己的订阅。查找有关如何创建主题和订阅的详细信息 您可以使用Service Bus Explorer进行本地调试并查看消息 我会选择 定

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

您可以使用带有主题的服务总线。您可以将消息发送到一个主题,然后向该主题订阅一个应用程序以接收消息

每个应用程序都可以在主题下拥有自己的订阅。查找有关如何创建主题和订阅的详细信息

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

我会选择

定义你的中心

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);
       }
    }
}
启动中添加信号器

 services.AddSignalR();

 app.UseSignalR(routes =>
 {
      routes.MapHub<ChatHub>("/chatHub");
 });     
SendMessage
在Hub中定义为方法,服务器将侦听它
ReceiveMessage
是客户端的侦听器,用于显示服务器发送的内容


来自

的所有代码都在这里,因为它主要基于观点。您最好尝试一个解决方案,如果它不适合您的需要,请在您遇到问题的特定部分寻求帮助。您是否查看了SignalR SignalR Core?SignalR似乎允许将请求从服务器发送到客户端(带有javascript的web客户端)。我可以用它向服务器发送请求吗?谢谢你的回答。但是我需要将MessageBroker嵌入到我的应用程序中。我不能使用Azure或RabbitMq或其他。
"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();
});