Я настраиваю клиент-серверное приложение с использованием сервера .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» или, по крайней мере, «входящий» на консоли, но ничего не происходит, вообще ничего не выводится