从.net socket发送/接收消息到signalR hub

时间:2016-12-09 06:18:43

标签: c# asp.net .net sockets signalr

我们有Windows服务器应用程序通过套接字(System.Net.Sockets)将消息通过套接字(Windows应用程序)发送到客户端。现在我们希望使用Asp.net SignalR从服务器向Web应用程序发送消息。

我们如何使用SignalR实现这一目标?请使用代码段和架构进行推荐。

2 个答案:

答案 0 :(得分:0)

此刻你不能。 SignalR的当前版本依赖于HTTP并遵循this protocol。如果不遵守协议,您将无法连接到服务器。

答案 1 :(得分:0)

您可以使用Hub使用SignalR执行此操作。 Fist,从NuGet Package Manager安装SignalR。

在Startup.cs文件中,添加

app.MapSignalR();

创建您的Hub类:

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());

请注意,您必须创建Json对象(您可以像MyHub类一样)

最后,在您的javascript文件中接受消息:

var progressNotifier = $.connection.progressHub;
progressNotifier.client.sendMessage = function (message) {
     // Do whatever you want with message you sent from server
        }
    };

您应该在html页面中添加脚本。 (你从SignalR获得了这个脚本)

<script src="~/Scripts/jquery.signalR-2.0.3.min.js"></script>

希望这会有所帮助......