public override async Task ReceiveAsync(WebSocket socket, WebSocketReceiveResult result, byte[] buffer) { try { var data = Encoding.UTF8.GetString(buffer); data = data.Replace("}}", "}"); var json = JsonConvert.DeserializeObject <NotificationMessage>(data); JsonWebToken.DecodeToObject <User>(json.Token, config.AppKey); var newId = json.NewId; var oldId = json.OldId; var exists = rooms.TryGetValue(oldId, out var oldRoom); if (exists) { oldRoom.Remove(WebSocketConnectionManager.GetId(socket)); } exists = rooms.TryGetValue(newId, out var room); if (!exists) { room = new List <string>(); rooms[newId] = room; } if (!room.Exists(s => s == WebSocketConnectionManager.GetId(socket))) { room.Add(WebSocketConnectionManager.GetId(socket)); } } catch (Exception e) { Console.WriteLine(e.Message); } }
public override Task OnDisconnected(WebSocket socket) { foreach (var room in rooms) { room.Value.Remove(WebSocketConnectionManager.GetId(socket)); } return(base.OnDisconnected(socket)); }