我在ASP.NET网站上有一个带有signalr的简单项目。 启动连接集线器的代码:
var scriptStarted = 'var myHub = $.connection.' + hubName + ';' + methodNameInitHub + '(myHub);';
$.connection.hub.error(function () {
alert("An error occured");
});
$.connection.hub.start()
.done(function () {
eval(scriptStarted);
myHub.server.registerClient($.connection.hub.id, clientIdentifier);
})
.fail(function () { alert("Could not Connect!"); });
此方法在“methodNameInitHub +'(myHub);”
中调用function methodInitEventHub(hub) {
if (hub) {
hub.client.addEvent = function (eventOperationName, eventType) {
$("#events").append("<li>" + eventOperationName + ", " + eventType + "</li>");
};
}
}
停止连接中心代码:
$.connection.hub.stop();
当我加载.aspx页面并启动集线器时,所有代码都会执行而没有错误,但是服务器的事件没有收到。 我停止并再次启动客户端(浏览器)收到的集线器连接事件 http://clip2net.com/s/2CP2e
为什么我需要重新启动连接集线器才能从服务器开始接收事件? 感谢。
答案 0 :(得分:1)
您遇到问题的原因是您在调用start之前必须至少有一个客户端集线器功能,否则您将不会订阅该集线器。
尝试
myHub.client.foo = function() {}
在开始之前。
在停止然后重新启动连接之后它工作的原因是因为您的脚本绑定了一个新的客户端方法,因此允许您在重新启动连接后订阅该集线器。
希望这有帮助!