Отправка сообщения через websocket с сервера на клиент - PullRequest
0 голосов
/ 10 июня 2019

Я настраиваю клиент-серверное приложение с использованием сервера .net core 2 и для целей тестирования - простой клиент javascript.Отправка сообщений с клиента на сервер работает, только отправка сообщений с сервера на клиент не работает вообще.Ни мой EventListener не срабатывает, ни я не вижу трафик в сетевом инспекторе моего браузера (Chrome или Firefox проверены до сих пор).

Я тестирую его с помощью iis-express и запускаю его из консоли с помощью .net run.

Итак, важная часть моего класса, которая обрабатывает управление веб-сокетами на стороне сервера, выглядит следующим образом:

public async Task InitWebsocketConnection(HttpContext context)
        {
            WebSocket ws = await context.WebSockets.AcceptWebSocketAsync();
            _wsCon = new WebsocketConnection(ws);

            await SendToWebsocket("Hello Client");

            _websocketStorrage.AddWebsocket(_wsCon);

            WebSocketCloseStatus? closestatus = await ReciveMessagesAsync();

            if (closestatus != null)
                await ws.CloseAsync(closestatus.Value, "End of Connection",
                   CancellationToken.None);

            _websocketStorrage.RemoveWebsocket(_wsCon.Id);

        }

private async Task SendToWebsocket(string payload)
        {
            byte[] bytes = Encoding.UTF8.GetBytes(payload);
            await _wsCon.Websocket.SendAsync(new ArraySegment<byte>(bytes, 0,
               bytes.Count()), WebSocketMessageType.Text, false, CancellationToken.None);
        }

Этот код вызывается в методе Configure класса Startup.cs следующим образом:

app.UseWebSockets();
app.Use(async (http, next) =>
   {
       if (http.WebSockets.IsWebSocketRequest)
       {
          await wsService.InitWebsocketConnection(http);
       }
          else
       {
          await next();
       }
  });

Мой клиент javascript выглядит следующим образом:

webSocket = new WebSocket("ws://localhost:50441/websocket");
console.log(webSocket);
webSocket.onopen = function (){
    document.getElementById("ready").innerHTML = "READY";
}
webSocket.onmessage = function (event) {
    console.log(event.data);
    console.log("incoming");
}
webSocket.onclose = function (event) {
    console.log(event);
}

Я могу установить соединение через веб-сокет с моим сервером, и любое сообщение, отправленное на сервер, будет получено правильно.Но я ожидал увидеть «Hello Client» или, по крайней мере, «входящий» на консоли, но ничего не происходит, вообще ничего не выводится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...