private void User_OnMessageRequestReceivedCallback(ChatLib.Message message) { if (message.RequestType == RequestType.Rooms) { Rooms = new ObservableDictionary <string, Room>(JsonSerialization.DeserializeRooms(message.Content)); } }
private void User_OnMessageStatusReceivedCallback(ChatLib.Message message) { if (message.StatusType == StatusType.Connected) { print(message.Name + " Connected", Log); } else if (message.StatusType == StatusType.Disconnected) { print(message.Name + " Disconnected", Log); } else if (message.StatusType == StatusType.Disconnecting) { if (message.Content != null || message.Content != "") { print(message.Content, Log, Color.Red); } print(message.Name + " Disconnected", Log); user.Close(); tcpClient.Close(); user = null; tcpClient.Dispose(); ChangeConnectionInputState(true); } else if (message.StatusType == StatusType.ErrorDisconnect) { print(message.Content, Log); user.Close(); tcpClient.Close(); user = null; tcpClient.Dispose(); ChangeConnectionInputState(true); } }
private void SendButton_Click(object sender, EventArgs e) { string text = this.UserInput.Text; if (string.IsNullOrEmpty(text)) { this.UserInput.BackColor = Color.DarkRed; SystemSounds.Exclamation.Play(); return; } var msg = new Message(text, this._currentChat); var packet = Data.SendMessage(msg); this._comptroller.PaketQueue.Enqueue(packet); this.MessageView.Items.Add(new ListViewItem(new[] { this.UserLabel.Text, text, this._currentChat.ToString() })); ScrollLastMessage(); this.UserInput.Text = ""; }
private void User_OnMessageInitReceivedCallback(ChatLib.Message message) { if (message.Content == "admin") { string password = ""; using (TextInput input = new TextInput()) { if (input.ShowDialog() == DialogResult.OK) { password = input.Password; } else { user.CreateStatus(StatusType.Disconnecting); ChangeConnectionInputState(true); return; } } user.Init(password); } }
private void User_OnMessageReceivedCallback(ChatLib.Message message) { print(message.Name + ": " + message.Content, Chat, NColorToColor(message.Color)); notifications.ShowNotification(message.Name, message.Content); }
private void User_OnMessageTransferReceivedCallback(ChatLib.Message message) { File.WriteAllBytes(message.Filename, message.FileContents); print(message.Name + ": file://" + new FileInfo(message.Filename).FullName.Replace(@"\", "/"), Chat, NColorToColor(message.Color)); }
private void User_OnMessageWhisperReceivedCallback(ChatLib.Message message) { print("Private Message From " + message.Name + ": " + message.Content, Chat, NColorToColor(message.Color)); }
private void User_OnMesssageInformationReceivedCallback(ChatLib.Message message) { print(message.Name + ": " + message.Content, Chat); }
private void Connect() { if (IPBox.Text == "IP Address" || IPBox.Text.Length < 1) { if (debug) { IPBox.Text = GetLocalIPAddress(); } else { IPBox.Text = "novastudios.tk"; } } Thread t = new Thread(delegate() { try { if (tcpClient != null) { if (tcpClient.Connected) { user.CreateStatus(StatusType.Disconnecting); ChangeConnectionInputState(true); //FixClient(); return; } } print("Connecting... ", Log); tcpClient = new TcpClient(IPBox.Text, 8910); ChatLib.Message secure = MessageHelpers.GetMessage(tcpClient.GetStream()); string password = ""; if (secure.Name == "locked") { using (TextInput input = new TextInput()) { if (input.ShowDialog() == DialogResult.OK) { password = input.Password; } else { user.CreateStatus(StatusType.Disconnecting); ChangeConnectionInputState(true); return; } } } if (secure.Content != "") { SslStream ssl = new SslStream(tcpClient.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null); ssl.AuthenticateAsClient(secure.Content); user = new User(nameBox.Text, ssl); user.Init(password); } else { user = new User(nameBox.Text, tcpClient.GetStream()); user.Init(password); } // Setup Callbacks user.OnMessageReceivedCallback += User_OnMessageReceivedCallback; user.OnMessageStatusReceivedCallback += User_OnMessageStatusReceivedCallback; user.OnMessageTransferReceivedCallback += User_OnMessageTransferReceivedCallback; user.OnMessageWhisperReceivedCallback += User_OnMessageWhisperReceivedCallback; user.OnMessageInitReceivedCallback += User_OnMessageInitReceivedCallback; //user.OnMessageAnyReceivedCallback += User_OnMessageAnyReceivedCallback; user.OnMessageRequestReceivedCallback += User_OnMessageRequestReceivedCallback; user.OnMesssageInformationReceivedCallback += User_OnMesssageInformationReceivedCallback; user.OnErrorCallback += (e) => { print(e.Message + " " + e.TargetSite + " " + GetLineNumber(e), Log); }; ChangeConnectionInputState(false); print("Successfully connected to " + IPBox.Text, Log, Color.LimeGreen); } catch (Exception ex) { print("Connection failed -> " + ex.Message, Log, Color.Red); } }); t.IsBackground = true; t.Start(); }
private static void HandleClient(TcpClient cl) { cl.Client.Send(toJson(welcomePaket)); while (cl.Connected) { SleepForClData(ref cl); var recBytes = RecBytes(ref cl); foreach (var data in ProcessReceived(Encoding.UTF8.GetString(recBytes))) { Data reData = default; var r = new Random(); int max = r.Next(0, 1000); Console.WriteLine(data); switch (data.Action) { case Data.ActionEnum.CONNECTED: break; case Data.ActionEnum.REGISTER: reData = new Data(Data.ActionEnum.SUCCEED_REGISTER); break; case Data.ActionEnum.LOGIN: reData = new Data(Data.ActionEnum.SUCCEED_LOGIN, "0"); break; case Data.ActionEnum.SEND_MESSAGE: reData = new Data(Data.ActionEnum.SUCCEED_MESSAGE_SEND); break; case Data.ActionEnum.GET_LAST_MESSAGES: if (data.Chats != null && data.Chats.Length > 0) { int chatID = data.Chats[0].ChatId; var msList = new List <Message>(); for (int i = 0; i < max; i++) { var mn = new Message("Message number " + i, r.NextDouble() > .5 ? chatID : 5); msList.Add(mn); } //reData = new Data( Data.ActionEnum.SUCCEED_GET_LAST_MESSAGES, msList.ToArray() ); TODO: } else { reData = new Data(Data.ActionEnum.ERROR_GET_LAST_MESSAGES, ""); } break; case Data.ActionEnum.GET_LAST_CHATS: var chList = new List <ChatInfo>(); for (int i = 0; i < max; i++) { var ch = new ChatInfo(i, r.Next(), 0, "Chat " + "number " + i); chList.Add(ch); } //reData = new Data( Data.ActionEnum.SUCCEED_GET_LAST_CHATS, chList.ToArray() ); TODO break; case Data.ActionEnum.GET_CHAT_INFO: reData = new Data(Data.ActionEnum.SUCCEED_GET_CHAT_INFO); break; case Data.ActionEnum.CREATE_CHAT: reData = new Data(Data.ActionEnum.SUCCEED_CREATE_CHAT); break; case Data.ActionEnum.ADD_TO_CHAT: reData = new Data(Data.ActionEnum.SUCCEED_ADD_TO_CHAT); break; case Data.ActionEnum.SUCCEED: case Data.ActionEnum.SUCCEED_LOGIN: case Data.ActionEnum.SUCCEED_REGISTER: case Data.ActionEnum.SUCCEED_MESSAGE_SEND: case Data.ActionEnum.SUCCEED_GET_LAST_MESSAGES: case Data.ActionEnum.SUCCEED_GET_LAST_CHATS: case Data.ActionEnum.SUCCEED_GET_CHAT_INFO: case Data.ActionEnum.SUCCEED_CREATE_CHAT: case Data.ActionEnum.SUCCEED_ADD_TO_CHAT: break; default: throw new ArgumentOutOfRangeException(); } PacketQueue.Enqueue(reData); } while (PacketQueue.Count > 0) { cl.Client.Send(toJson(PacketQueue.Dequeue())); } } }