コード例 #1
0
 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);
     }
 }
コード例 #2
0
 public override Task OnDisconnected(WebSocket socket)
 {
     foreach (var room in rooms)
     {
         room.Value.Remove(WebSocketConnectionManager.GetId(socket));
     }
     return(base.OnDisconnected(socket));
 }