Java에서 내 자신의 SignalR Client를 쓰고 있는데 문제가 있습니다.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>
내 질문에 대한 요청을 보내기는 클라이언트가 연결을 유지해야 원하든입니까? 서버 방송 메시지를 어떻게들을 수 있습니까?
또 다른 문제는 연결이 설정된 후 클라이언트에서 서버로 메시지를 보내려고 할 때 응답을받지 못한다는 것입니다. http://myserver/battle/send?transport=longPolling&connectionId=<received_connection_id>
에게 요청을 보냅니다. 방법 OnReceivedAsync
은 항상 호출되지만 응답이 없습니다 (전송 된 데이터와 별도로).
제 질문에 대한 설명과 SignalR 작업의 내부 원칙에 감사드립니다. 미리 감사드립니다.
.NET 클라이언트 구현을 살펴 보았습니까? – davidfowl
@dfowler 예,하지만 .NET에 익숙하지 않으며 C# 코드를 이해하기가 어렵습니다. –
Java 및 .NET이 매우 비슷합니다. – davidfowl