我们有Windows服务器应用程序通过套接字(System.Net.Sockets)将消息通过套接字(Windows应用程序)发送到客户端。现在我们希望使用Asp.net SignalR从服务器向Web应用程序发送消息。
我们如何使用SignalR实现这一目标?请使用代码段和架构进行推荐。
答案 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>
希望这会有所帮助......