: QUITif (type.equals (CMD_QUITE)) {= CMD_QUITE;
}
// Тип повідомлення CMD_SYNC
// Приклад: MSG: room: messageif (type.equals (CMD_MESSAGE)) {room = getRoomByName (roomName); (room! = null) {
// Якщо у кімнати стоїть ідентіяікатор захищеного з'єднання,
// то повідомлення перед відправкою необхідно зашифрувати. (room.isProtected ()) {
// Перевіряємо, чи прийшов до нас відкриті ключ від ініціатора
// захищеного з'єднання. (room.getExternalPublicKey ()! = null) {
// зашифровувати повідомлення з помощтю отриманого відкритого ключа.
message = RSACipher.encode (message, room.getExternalPublicKey ());
} else {
// Якщо кдюча немає, то посилаємо до подання повідомлення про помилку.
// Приклад: from: INFO: room: message (localAddress
+ ":" + INFO
+ ":" + room.getName ()
+ ":" + "Помилка при кодуванні. Немає відкритого ключа. ");" "; p align="justify">}
}
}
// Додаємо до ідентифікатора назву кімнати,
// в яку вона адресована, і саме повідомлення.
mes = CMD_MESSAGE + ":" + roomName + ":" + message;
}
// Тип повідомлення CMD_PRV_INIT
// Приклад: INIT: room: public_keyif (type.equals (CMD_PRV_INIT)) {
// Знаходимо в Спіка кімнат потрібну за назвою.
NetRoom room = getRoomByName (roomName); (room! = null) {
// Витягуємо відкритий ключ, який знадобиться інший
// стороні захищеного з'єднання для шифрування вихідних
// сообщеній.pubKey = room.getKeyPair (). getPublic ();
// Додаємо до ідентифікатора назву кімнати, в яку
// адресовано ообщеніе і відкритий ключ.
mes = CMD_PRV_INIT + ":" + roomName + ":" + new String (pubKey.getEncoded ());
}
}
// Тип повідомлення CMD_ACCEPT
// Приклад: ACPT: room: public_keyif (type.equals (CMD_PRV_ACCEPT)) {
// До ідентифікатором додаємо назву кімнати,
// в якій встановлюється захищене з'єднання,
// а також саме повідомлення. = CMD_PRV_ACCEPT + ":" + roomName + ":" + message;
} mes;
}
Після прийому вхідного повідомлення, його необхідно обробити, для цього служить метод parseMessage (), описаний нижче:
/**