我無法獲取SignalR服務器端中心代碼來調用JS客戶端方法。反過來工作正常 - 所以當我的客戶端發送消息到服務器時,它按預期發送。我一直很小心避免出現明顯的陷阱,但我想我仍然可以忽略一些東西。這裏是我的代碼:未調用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);
...
});
正如上面提到的,我無法找到設置,但這裏的任何明顯的缺陷有幾個可能相關的要點:
- 建立連接並調用服務器端方法。
- 這可能是不相關的,但我試過強迫不同的運輸行爲沒有改變。
- 客戶端方法名稱在任何時候都不與服務器方法名稱衝突。
- 我也嘗試將消息發送到特定的客戶端連接(在這種情況下實際上是目標)。
- 我在客戶端和服務器上都啓用了日誌記錄,但在任何情況下都沒有看到任何相關內容。
因此,鑑於上述情況,我失去了一些東西明顯?如果不是,確定故障點的最佳方法是什麼?
P.S.這與問題沒有特別的關係,但由於某種原因,Fiddler不再捕獲任何瀏覽器的任何流量,這使得調試WS或HTTP流量有點具有挑戰性 - 我猜這是Windows 8的事情。 。
你完全保存了我的一天,¡ – vfportero
太棒了!非常感謝! – Oleg
這是非常重要的提示!你救了我幾天:)謝謝! –