public virtual Task SendAsync(ArraySegment<byte> message, WebSocketMessageType messageType, bool endOfMessage = true)
{
if (GetWebSocketState(WebSocket) != WebSocketState.Open)
{
return TaskAsyncHelper.Empty;
}
var sendContext = new SendContext(this, message, messageType, endOfMessage);
return _sendQueue.Enqueue(async state =>
{
var context = (SendContext)state;
if (GetWebSocketState(context.Handler.WebSocket) != WebSocketState.Open)
{
return;
}
try
{
await context.Handler.WebSocket
.SendAsync(context.Message, context.MessageType, context.EndOfMessage, CancellationToken.None)
.PreserveCulture();
}
catch (Exception ex)
{
// Swallow exceptions on send
_logger.LogError("Error while sending: " + ex);
}
},
sendContext);
}