Java で独自の SignalR クライアントを作成していますが、いくつかの問題に直面しています。
まず、PersistentConnection ロジックを実装したいと思います。私のサーバーコードは例から取られています:
public class Battle : PersistentConnection
{
protected override Task OnConnectedAsync(IRequest request, string connectionId)
{
return Connection.Broadcast("Connection " + connectionId + " connected");
}
protected override Task OnReconnectedAsync(IRequest request, IEnumerable<string> groups, string clientId)
{
return Connection.Broadcast("Client " + clientId + " re-connected");
}
protected override Task OnReceivedAsync(IRequest request, string connectionId, string data)
{
// return Connection.Broadcast("Connection " + connectionId + " sent ");
return Connection.Send(connectionId, "Connection " + connectionId + " sent ");
}
protected override Task OnDisconnectAsync(string connectionId)
{
return Connection.Broadcast("Connection " + connectionId + " disconncted");
}
protected override Task OnErrorAsync(Exception error)
{
return Connection.Broadcast("Error occured " + error);
}
}
.NET クライアント コードから判断すると、サーバー クライアントに接続するには次のことを行う必要があることがわかりました。
1) リクエストを送信し、レスポンスからhttp://myserver/battle/negotiate
取得するConnectionId
2) にリクエストを送信http://myserver/battle/connect?transport=longPolling&connectionId=<received_connection_id>
私の質問は、接続を維持するためにクライアントが何をすべきかということです。サーバーブロードキャストメッセージをどのようにリッスンする必要がありますか?
もう 1 つの問題は、接続が確立された後にクライアントからサーバーにメッセージを送信しようとすると、応答がないことです。にリクエストを送信しhttp://myserver/battle/send?transport=longPolling&connectionId=<received_connection_id>
ます。メソッドOnReceivedAsync
は常に呼び出されますが、(送信されたデータとは関係なく) 応答がありません。
私の質問と SignalR 作業の内部原則についての説明に感謝します。前もって感謝します。