WebSockets не работает при сборке приложения - PullRequest
0 голосов
/ 04 января 2019

Я попал в приложения 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...