public async Task BroadcastAsync(WebSocketMessageContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (context.Value == null) { throw new ArgumentNullException(nameof(context.Value)); } if (!Connections.Any()) { return; } var segments = context.ToSegment(); var descriptor = new WebSocketMessageDescriptor { Segments = segments, EndOfMessage = true, MessageType = WebSocketMessageType.Text }; _sendFrameAsyncLock.Wait(); foreach (var connection in Connections) { await SendAsync(connection.Value, descriptor); } _sendFrameAsyncLock.Release(); }
public Task SendAsync(string connectionId, WebSocketMessageContext context) { if (!Connections.Any()) { return(TaskCache.CompletedTask); } WebSocketTransport transport = null; if (!Connections.TryGetValue(connectionId, out transport)) { throw new ArgumentOutOfRangeException(nameof(transport)); } var segments = context.ToSegment(); var descriptor = new WebSocketMessageDescriptor { Segments = segments, EndOfMessage = true, MessageType = WebSocketMessageType.Text }; return(SendAsync(transport, descriptor)); }