首页 > 解决方案 > 构建应用程序时 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);

标签: asp.net-corewebsocket

解决方案


推荐阅读