public async Task SendMessageToAllButSelfAsync(WebSocket socket, string message) { var dictionary = WebSocketConnectionManager.GetAll(); foreach (var pair in dictionary) { if (pair.Value.State == WebSocketState.Open) { if (pair.Value == socket) { if (dictionary.Count == 1) { await SendMessageAsync(socket, "Sorry, no one else is here"); } else { return; } } else { await SendMessageAsync(pair.Value, message); } } } }
public override async Task OnDisconnected(WebSocket socket) { await WebSocketConnectionManager.RemoveSocket(WebSocketConnectionManager.GetId(socket)); var dictionary = WebSocketConnectionManager.GetAll(); if (dictionary.Count == 0) { timer.Dispose(); } }
public override async Task OnConnected(WebSocket socket) { await base.OnConnected(socket); var socketId = WebSocketConnectionManager.GetId(socket); var dictionary = WebSocketConnectionManager.GetAll(); if (dictionary.Count == 1) { var autoEvent = new AutoResetEvent(false); timer = new Timer(SendValueAsync, autoEvent, 0, 1000); } }