/// <summary> /// "правильный" выход из программы через отключение пользователя /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void exitToolStripMenuItem_Click(object sender, EventArgs e) { //готовим пакет на отключение и отправляем его на сервер chatPacket packet = new chatPacket(); await con.sendString(JsonConvert.SerializeObject(packet.closeCommand(me))); Application.Exit(); }
public static chatPacket Deserialize(byte[] data) { chatPacket result = new chatPacket(); using (MemoryStream m = new MemoryStream(data)) { using (BinaryReader reader = new BinaryReader(m)) { result.packetID = reader.ReadInt32(); result.textString = System.Text.Encoding.Default.GetString(reader.ReadBytes(Constants.BUFFER_SIZE)); } } return(result); }
void processNetPackets() { Packet incomingPacket = Net.ReadPacket(); while (incomingPacket != null) { byte[] rawBits = new byte[incomingPacket.Size]; incomingPacket.ReadBytes(rawBits); chatPacket newMessage = chatPacket.Deserialize(rawBits); printOutputLine("Chat Text: " + newMessage.textString.ToString()); printOutputLine("Received Packet from UserID: " + incomingPacket.SenderID.ToString()); printOutputLine("Received Packet ID: " + newMessage.packetID.ToString()); // Look to see if there's another packet waiting incomingPacket = Net.ReadPacket(); } }
private async void button1_Click(object sender, EventArgs e) { //определяем себя chatUser me = new chatUser(); me.login = loginBox.Text; chatPacket packet = new chatPacket(); //готовим пакет на аутентификацию string strJson = JsonConvert.SerializeObject(packet.authCommand(me)); //формируем коннектор c = new connector(); //готовим параметры подключения Dictionary <string, object> d = new Dictionary <string, object>(); d.Add("uri", new Uri("ws://localhost:64636/Chat")); //инициализируем подключение c.initialize(d); //открываем подключение await c.open(); //отправляем подключение await c.sendString(strJson); //получаем ответ string message = await c.reciveString(); //разворачиваем ответ chatMessage answer = JsonConvert.DeserializeObject <chatMessage>(message); //если получили ответ с guid то считаем что подключение удалось if (answer.userSender.id != Guid.Empty) { //открываем основную форму ((ChatForm)this.Owner).saveConnection(c, answer.userSender); this.Close(); } }
void sendChat(string chatMessage) { switch (currentState) { case states.NOT_INIT: printOutputLine("The app has not initialized properly and we don't know your userID."); break; case states.IDLE: case states.REQUEST_FIND: case states.FINDING_ROOM: case states.REQUEST_JOIN: case states.REQUEST_CREATE: case states.REQUEST_LEAVE: case states.IN_EMPTY_ROOM: printOutputLine("You need to be in a room with another player to send a message."); break; case states.IN_FULL_ROOM: { chatPacket newMessage = new chatPacket(); // Create a packet to send with the packet ID and string payload lastPacketID++; newMessage.packetID = lastPacketID; newMessage.textString = chatMessage; Oculus.Platform.Net.SendPacket(remoteUser.ID, newMessage.Serialize(), SendPolicy.Reliable); } break; default: printOutputLine("You have hit an unknown state."); break; } }