【发布时间】:2015-06-17 16:26:30
【问题描述】:
我使用 SignalR 创建了一个 HUB,我在其中订阅统计信息并接收来自服务器的响应。当我第一次登录时,我会收到我在登录时使用 SignalR Hub 订阅的所有客户端统计信息。
它通过 SignalR HUB 不断向客户端广播更新的统计信息,直到我不刷新页面。刷新页面后,SignalR 会停止向客户端广播更新的统计信息。
在调试时,我可以看到数据在 _jsonStatsData 变量中,它是集线器上下文的数据以将其广播到客户端,但不知何故它没有广播,我在 console.log 中得到 null。
客户端:
$(function () {
var notifications = $.connection.localServerHub;
notifications.client.receivedUpdatedStats = function (updatedStats) {
console.log(updatedStats);
};
$.connection.hub.logging = true;
$.connection.hub.start().done(function () {
// Passing the Stats value from here e.g 5
notifications.server.subscribeStats(5);
}).fail(function (e) {
alert(e);
});
});
HUB 方法和委托:
[HubName("localServerHub")]
public class LocalServerHub : Hub
{
private string _jsonStatsData = string.Empty;
[HubMethodName("subscribeStats")]
public string SubscribeStats(string statId)
{
lock (LoginUsers.ConnectedUsersList)
{
if (!_objHubClient.Subscribe)
{
_objHubClient.ResponseEvent += new HubClient.ResponseBO(Response_Recieved);
_objHubClient.Subscribe = true;
}
objHubClient.SubscribeStatsNotifications(Convert.ToInt32(statId));
return Clients.Caller.RecievedUpdatedStats(_jsonStatsData).ToString();
}
}
private void Response_Recieved(Messages objMessage)
{
try
{
if (objMessage.OperationType == Operation.StatsUpdateNotification)
{
_jsonStatsData = JsonConvert.SerializeObject(objMessage.ResponseStats);
SubscribeQueueStats(string.Empty);
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
刷新页面后会出现什么问题? 没有会话超时问题,也没有断开连接问题,但在客户端刷新后我仍然一无所获。
【问题讨论】:
标签: jquery asp.net ajax signalr signalr-hub