2017-05-24 32 views
0

.NETでSignalRを使用するクライアントとサーバーの両方のアプリケーションを作成しようとしています。最終目標は既存の製品と統合することです。既存の製品は、一方のコンピュータが両方の役割を果たし、他方のコンピュータはすべてクライアントであるため、クライアントとサーバーの両方になる必要があります。 、次のコードが実行されるSignalR HubConnectionがエラーなしで即座に閉じる

Serverの起動コードが完了した後に実行されるクライアントのスタートアップコードでは、

Full source code on GitHub.

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をヒットさせ、ハブにメッセージを送信し、同じメッセージをクライアントに戻してもらいたいと思っています。

何が問題になっているかについてのアイデアはありますか?

+1

URLを 'http:// localhost:8080/signalr'に変更するとどうなりますか? – Amy

+0

これは試しても機能しませんでした。 StartUp設定は "/ signalr"パスとのマッピングです。また、サーバーの文字列に "/ signalr"を追加しようとしましたが、両方の組み合わせでは機能しませんでした。 – Carson

+0

ブラウザのネットワークタブで、 'connect?transport = .....'と 'start?transport = .. ... '。それらは200の応答を得ていますか? 2番目のリクエストの場合、レスポンス本文には何が含まれていますか?サーバーでWebソケットが有効になっていますか? (もしあなたがこれをテストするためにブラウザを使用していないのであれば、依然としてFiddlerを使ってリクエスト/レスポンスを傍受して調べることができます) – Amy

答えて

0

間違いなく、ばかげた間違いを修正しました。私はちょうどポート8080から8089に切り替えました。他の何かがポート8080を使用していると思いますが、クライアントとサーバーの両方をポート8089に切り替えることで問題は解決しました。

関連する問題