private async Task Run() { var hc = await listener.GetContextAsync(); if (hc.Request.IsWebSocketRequest) { //WebSocketでレスポンスを返却 var wsc = await hc.AcceptWebSocketAsync(null); var myws = new ws_clients(wsc.WebSocket); ws.Add(myws); var new_arg = new NewClientArg(); new_arg.ws = myws; NewClient?.Invoke(this, new_arg); List <int> delWS = ws.Select((value, index) => new { x = value, i = index }).Where(y => (y.x.ws.State == WebSocketState.Closed) || (y.x.ws.State == WebSocketState.Aborted)).Select(x => x.i).ToList(); delWS.ForEach(x => { ws.RemoveAt(x); }); } else { WebResponse(hc); hc.Response.Close(); return; } }
void new_client(object sender, EventArgs ev) { if (ev is NewClientArg) { NewClientArg client = ev as NewClientArg; client.ws.ReceiveMessage += receive; } }