.NETでSignalRを使用するクライアントとサーバーの両方のアプリケーションを作成しようとしています。最終目標は既存の製品と統合することです。既存の製品は、一方のコンピュータが両方の役割を果たし、他方のコンピュータはすべてクライアントであるため、クライアントとサーバーの両方になる必要があります。 、次のコードが実行されるSignalR HubConnectionがエラーなしで即座に閉じる
Serverの起動コードが完了した後に実行されるクライアントのスタートアップコードでは、:
m_hubConnection = new HubConnection("http://localhost:8080/");
m_myHubProxy = m_hubConnection.CreateHubProxy(nameof(ServerHub));
m_myHubProxy.On<string, string>(nameof(ServerHub.BroadCastMessage), (name, message) => OnMessageReceived(name, message));
m_hubConnection.Closed += OnClosed;
m_hubConnection.Error += OnErrorReceived;
await m_hubConnection.Start(new WebSocketTransport());
await SendMessage("Startup", "Sending from same thread as connection established");
OnClosedコールバックはほとんどすぐに呼ばれているので、接続は起動時に直ちに終了します。
OnErrorReceivedコールバックが、それは何らかの明白な誤り
Startメソッドがハングし、決して近くにないので、呼び出されることはありませんがコールバック
を打つことはありませんでのSendMessage方法理想的には、接続を開き、開いたままにしてSendMessageをヒットさせ、ハブにメッセージを送信し、同じメッセージをクライアントに戻してもらいたいと思っています。
何が問題になっているかについてのアイデアはありますか?
URLを 'http:// localhost:8080/signalr'に変更するとどうなりますか? – Amy
これは試しても機能しませんでした。 StartUp設定は "/ signalr"パスとのマッピングです。また、サーバーの文字列に "/ signalr"を追加しようとしましたが、両方の組み合わせでは機能しませんでした。 – Carson
ブラウザのネットワークタブで、 'connect?transport = .....'と 'start?transport = .. ... '。それらは200の応答を得ていますか? 2番目のリクエストの場合、レスポンス本文には何が含まれていますか?サーバーでWebソケットが有効になっていますか? (もしあなたがこれをテストするためにブラウザを使用していないのであれば、依然としてFiddlerを使ってリクエスト/レスポンスを傍受して調べることができます) – Amy