JS クライアント メソッドを呼び出すための SignalR サーバー側ハブ コードの取得に問題があります。逆は正常に機能しているため、クライアントがサーバーにメッセージを送信すると、期待どおりに配信されます。明らかな罠を避けるようにかなり注意してきましたが、まだ何かを見落としているようです。これが私のコードです:
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の問題だと思います. ..