У нас есть работающий сервис REST ASP.net Web API, который использует веб -питания на одном из методов нашего контроллера с использованием httpcontext.acceptwebsocketresponse (..). < /p>
обработчик сокета Код выглядит примерно так ... < /p>
public async Task SocketHandler(AspNetWebSocketContext context)
{
_webSocket = context.WebSocket;
...
while(!cts.IsCancellationRequested)
{
WebSocketReceiveResult result = _webSocket.ReceiveAsync(inputSegment, cts.Token).Result;
WebSocketState currentSocketState = _webSocket.State;
if (result.MessageType == WebSocketMessageType.Close ||
currentSocketState == WebSocketState.CloseReceived)
{
// Should I use .CloseAysnc() or .CloseOutputAsync()?
_webSocket.CloseOutputAsync(WebSocketCloseStatus.NormalClosure, "client requested", cts.Token).Wait();
}
if (currentSocketState == WebSocketState.Open)
{
...
}
}
}
< /code>
Какова разница между .closeasync () и slowOutputAysNc ()? Я попробовал оба, и они оба, казалось, работали нормально, но должна быть какая -то разница. Они оба имеют очень похожие описания msdn ... < /p>
system.net.websockets.closeasync < /strong> - закрывает соединение WebSocket в виде асинхронной операции с использованием близкого рукоятки, определенного в разделе «Спецификация протокола WebSocket». /> system.net.websockets.closeOutputAsync - инициирует или завершает закрытие рукопожатия, определенное в разделе 7.
Подробнее здесь: https://stackoverflow.com/questions/267 ... closeasync