asp.net-core - 构建应用程序时 WebSockets 不工作
问题描述
我必须通过 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);
解决方案
推荐阅读
- python - 从子脚本启动管道
- wpf - 是否可以通过 WPF 中的代码取消绑定数据绑定的多列树视图?
- ubuntu - Ubuntu fstransform ext4 to xfs 错误文件太大
- sql - 将数据库中的 URI 显示为可点击的链接
- node.js - DELETE 和 GET 失败
- python - 来自 x 和 y 数据的密度分布和条形图
- python - 为许多类似的 excel 文件自动执行此代码并输出到一个文件
- java - 在Java中将数据添加到scala WrappedArray
- vim - 是否可以从 vim 帮助提示中修复 'help-curwin' 命令/功能?
- typescript - 使用道具更改 Typescript 中的状态