我无法让 SignalR 服务器端集线器代码调用 JS 客户端方法。反过来工作正常 - 所以当我的客户端向服务器发送消息时,它会按预期传递。我一直非常小心地避免明显的陷阱,但我想我仍然忽略了一些东西。这是我的代码:
来自 MessageHub.cs:
public bool SendMessage( ClientMessage message )
{
...
Clients.All.addMessage("my message");
...
}
Javascript:
$.connection.hub.start()
.done(function () {
messageHub = $.connection.message;
// addMessage is never invoked.
messageHub.client.addMessage = function (message) {
alert('message added');
};
/* // I tried this based on some sample code but still not invoked.
messageHub.addMessage = function (message) {
alert('message added');
};
*/
// This works as expected.
messageHub.server.registerUser(userId);
...
});
如上所述,我找不到任何明显的设置缺陷,但这里有一些可能相关的点:
- 建立连接并调用服务器端方法。
- 这可能无关紧要,但我尝试过强制不同的传输而不改变行为。
- 客户端方法名称在任何时候都不会与服务器方法名称冲突。
- 我还尝试将消息发送到特定的客户端连接(在这种情况下,这实际上是目标)。
- 我在客户端和服务器上都启用了日志记录,但在这两种情况下都看不到任何相关内容。
那么,鉴于上述情况,我是否遗漏了一些明显的东西?如果不是,那么识别故障点的最佳方法是什么?
PS这与问题没有特别相关,但是,由于某种原因,Fiddler 不再捕获来自我的任何浏览器的任何流量,这使得调试 WS 或 HTTP 流量有点挑战性 - 我猜这是 Windows 8 的事情。 ..