Обновленеи протокола, убран legacy код, переход на более практичную схему TLV
This commit is contained in:
@@ -13,11 +13,11 @@ import org.java_websocket.handshake.ClientHandshake;
|
||||
import org.java_websocket.server.WebSocketServer;
|
||||
|
||||
import io.orprotocol.client.Client;
|
||||
import io.orprotocol.frame.FrameDecoder;
|
||||
import io.orprotocol.index.ClientIndexer;
|
||||
import io.orprotocol.lock.ThreadLocker;
|
||||
import io.orprotocol.packet.Packet;
|
||||
import io.orprotocol.packet.PacketExecutor;
|
||||
import io.orprotocol.packet.PacketFactory;
|
||||
import io.orprotocol.packet.PacketManager;
|
||||
|
||||
public class Server extends WebSocketServer {
|
||||
@@ -104,9 +104,9 @@ public class Server extends WebSocketServer {
|
||||
/**
|
||||
* Создаем пакет из полученных байтов.
|
||||
*/
|
||||
PacketFactory packetFactory = new PacketFactory(bytes, this.packetManager);
|
||||
Packet packet = packetFactory.createPacket();
|
||||
int packetId = packetFactory.getPacketId();
|
||||
FrameDecoder frameDecoder = new FrameDecoder(bytes, client, this.packetManager);
|
||||
Packet packet = frameDecoder.decode();
|
||||
int packetId = packet.packetId;
|
||||
/**
|
||||
* Получаем обработчик пакета и вызываем его метод обработки.
|
||||
*
|
||||
@@ -127,7 +127,7 @@ public class Server extends WebSocketServer {
|
||||
if(listener != null && !listener.onPacketReceived(this, client, packet)) {
|
||||
/**
|
||||
* Если слушатель сервера вернул false, пакет не обрабатываем.
|
||||
*/
|
||||
*/
|
||||
return;
|
||||
}
|
||||
/**
|
||||
@@ -162,6 +162,13 @@ public class Server extends WebSocketServer {
|
||||
* Если клиент не отправляет heartbeat в указанный интервал, его можно отключить.
|
||||
*/
|
||||
Client client = new Client(socket, this.settings.heartbeatInterval, this);
|
||||
/**
|
||||
* Устанавливаем версию клиента
|
||||
*/
|
||||
client.setVersion(this.extractVersionFromHandshake(handshake));
|
||||
/**
|
||||
* Получаем адрес клиента
|
||||
*/
|
||||
String ipAddress = handshake.getFieldValue("X-Forwarded-For");
|
||||
if (ipAddress == null || ipAddress.isEmpty()) {
|
||||
ipAddress = socket.getRemoteSocketAddress().getAddress().getHostAddress();
|
||||
@@ -182,6 +189,23 @@ public class Server extends WebSocketServer {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Версия передается в адресной строке при подключении клиента, например ws://.../?v=1,
|
||||
* если версия не передана - возвращается первая версия по умолчанию (1)
|
||||
* @param handshake
|
||||
*/
|
||||
private int extractVersionFromHandshake(ClientHandshake handshake) {
|
||||
String versionStr = handshake.getFieldValue("v");
|
||||
if(versionStr == null || versionStr.isEmpty()) {
|
||||
return 1;
|
||||
}
|
||||
try {
|
||||
return Integer.parseInt(versionStr);
|
||||
} catch (NumberFormatException e) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart() {
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user