C# 从.net套接字向信号集线器发送/接收消息

C# 从.net套接字向信号集线器发送/接收消息,c#,asp.net,.net,sockets,signalr,C#,Asp.net,.net,Sockets,Signalr,我们让windows server应用程序通过套接字(System.Net.Sockets)将消息发送给具有套接字(windows应用程序)的客户端。现在,我们希望使用Asp.net Signal将消息从服务器发送到web应用程序 我们如何使用信号器实现这一点?请建议使用代码片段和体系结构。目前您还不能。当前版本的SignalR依赖于HTTP并遵循以下要求。如果不遵守协议,您将无法连接到服务器。您可以使用SignalR使用Hub。首先,从NuGet软件包管理器安装信号器 在Startup.cs文

我们让windows server应用程序通过套接字(System.Net.Sockets)将消息发送给具有套接字(windows应用程序)的客户端。现在,我们希望使用Asp.net Signal将消息从服务器发送到web应用程序


我们如何使用信号器实现这一点?请建议使用代码片段和体系结构。

目前您还不能。当前版本的SignalR依赖于HTTP并遵循以下要求。如果不遵守协议,您将无法连接到服务器。

您可以使用SignalR使用
Hub
。首先,从NuGet软件包管理器安装信号器

在Startup.cs文件中,添加

app.MapSignalR();
创建中心类:

public class MyHub : Hub
{
    public string msg = "Initializing hub...";

    public void CallLongOperation(int progressStatus)
    {
        Newtonsoft.Json.Linq.JObject jsonMessage = Newtonsoft.Json.Linq.JObject.Parse(@"{
                      'msg': 'message',
                      'value': "someValue"}");
        Clients.Caller.sendMessage(jsonMessage.ToString());
    }
}
接下来,在控制器中,获取
MyHub
实例,您可以通知客户端:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ProgressHub>();
hubContext.Clients.All.sendMessage(jsonMessage.ToString());
您应该在
html
页面中添加脚本。(您从SignalR获得此脚本)


希望这将有助于

var progressNotifier = $.connection.progressHub;
progressNotifier.client.sendMessage = function (message) {
     // Do whatever you want with message you sent from server
        }
    };
<script src="~/Scripts/jquery.signalR-2.0.3.min.js"></script>