我已经拥有通过WebSockets进行通信的ASP.NET-Core 2.0应用程序。
应用A为服务器。 应用程序A在具有Ubuntu的远程服务器上运行。
应用B是客户端 应用程序B在我办公室的PC上运行。
当我在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);