JSクライアントメソッドを呼び出すためにSignalRサーバー側のハブコードを取得できません。逆はうまくいきます。クライアントがサーバーにメッセージを送信すると、サーバーは期待どおりに配信されます。私は明らかにトラップを避けるためにかなり注意してきましたが、私はまだ何かを見過ごしていると思います。ここに私のコードだ:MessageHub.csからSignalR JSクライアントメソッドが呼び出されない
:
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トラフィックのデバッグに少し挑戦しています。
あなたは私の一日を完全に保存しました。 – vfportero
恐ろしい!どうもありがとうございます! – Oleg
これは非常に重要なヒントです!あなたは私の日を救った:)ありがとう! –