Я попал в приложения ASP.NET-Core 2.0, взаимодействующие через WebSockets.
Приложение A является сервером.
Приложение A работает на удаленном сервере с Ubuntu.
Приложение B является клиентом
Приложение B запущено на компьютере в моем офисе.
Когда я тестирую свои приложения локально в Debug, все работает нормально. Клиент подключается к серверу и может обмениваться информацией.
Однако, когда я создаю свое серверное приложение, Клиент может подключиться к нему, но когда сервер пытается отправить сообщение клиенту, сообщение не получено клиентом.
public async Task<RecievedResult> RecieveAsync(CancellationToken cancellationToken)
{
RecievedResult endResult;
var buffer = new byte[Connection.ReceiveChunkSize];
WebSocketReceiveResult result;
MemoryStream memoryStream = new MemoryStream();
do
{
if (cancellationToken.IsCancellationRequested)
{
throw new TaskCanceledException();
}
Console.WriteLine("Server Invoke");
// result never finishes when application is build. On debug it finishes and method returns the correct result
result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancellationToken);
if (result.MessageType == WebSocketMessageType.Close)
{
await CloseAsync(cancellationToken);
endResult = new RecievedResult(null, true);
return endResult;
}
memoryStream.Write(buffer, 0, result.Count);
} while (!result.EndOfMessage);
endResult = new RecievedResult(memoryStream, false);
return endResult;
}
Это часть кода, где все висит.
Я попробовал:
Build Server - Build Client => not working
Build Server - Debug Client => not working
Debug Server - Debug Client => working
Мне нужен любой совет, что может быть не так и где я должен искать проблемы.
Консоль, если без ошибок. Все висит на:
result = await _webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), cancellationToken);