private void ClientOnOnMessageReceived(object sender, OnMessageReceivedArgs e) { var userName = e.ChatMessage.Username; var message = e.ChatMessage.Message.Trim(); Debug.Log($"[Client] {userName}: {message}"); var user = _db.GetOrCreate(userName); user.IsActive = true; user.LastInteraction = Time.time; user.IsModerator = e.ChatMessage.IsModerator; user.IsBroadcaster = e.ChatMessage.IsBroadcaster; user.IsSubscriber = e.ChatMessage.IsSubscriber; OnUserMessage?.Invoke(user, message); }
public void ReadNextPacket() { var recv = messageQueue.Dequeue(); ByteUtil.DumpNum(recv.Buffer); if (recv.Buffer[0] == (byte)Protocol.C_Connect) { var peer = new NetworkPeer() { IPAddress = recv.RemoteEndPoint }; CConnectRequest packet; try { packet = ClassSerializer.Deserialize <CConnectRequest>(recv.Buffer); } catch (Exception e) { // packet was mutated, ignore and move on. //return; throw e; } (bool accept, string reason) = OnConnectingCheck(peer, packet); if (accept == true) { User user = new User() { NetworkID = Guid.NewGuid(), Nickname = packet.Nickname, IPAddress = peer.IPAddress, }; Send(user, new SPConnectAccept(user.NetworkID)); OnUserConnect(user); } else { Send(peer, new SPConnectDeny(reason)); } //OnUserConnectRequest?.Invoke(this, args); } else if (recv.Buffer[0] == (byte)Protocol.C_Disconnect) { User user = GetUserByIP(recv.RemoteEndPoint); if (user != null) { OnUserDisconnect(user); return; } } else { User user = GetUserByIP(recv.RemoteEndPoint); if (user != null) { OnUserMessage?.Invoke(user, recv.Buffer); return; } Console.WriteLine("Could not find user?"); } }