From a4346679e7d9e11bd8583f9119d7559d2d27e358 Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Mon, 16 Mar 2026 17:06:25 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=BE=D0=B3=D0=B8=D1=87=D0=BD=D0=B0?= =?UTF-8?q?=D1=8F=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83=D1=80=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BA=D0=B5=D1=82=D0=BE=D0=B2=20=D0=B1=D0=B5?= =?UTF-8?q?=D0=B7=20=D0=BC=D0=B0=D0=B3=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=B8?= =?UTF-8?q?=D1=85=20=D1=87=D0=B8=D1=81=D0=B5=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/g365sfu/Room.java | 8 +++++--- src/main/java/io/g365sfu/SFU.java | 12 +++++++----- src/main/java/io/g365sfu/net/Incoming.java | 19 +++++++++++++++++++ src/main/java/io/g365sfu/net/Outgoing.java | 17 +++++++++++++++++ src/main/java/io/g365sfu/net/SfuSock.java | 10 +++++----- 5 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 src/main/java/io/g365sfu/net/Incoming.java create mode 100644 src/main/java/io/g365sfu/net/Outgoing.java diff --git a/src/main/java/io/g365sfu/Room.java b/src/main/java/io/g365sfu/Room.java index e463092..9784c33 100644 --- a/src/main/java/io/g365sfu/Room.java +++ b/src/main/java/io/g365sfu/Room.java @@ -3,6 +3,8 @@ package io.g365sfu; import java.nio.ByteBuffer; import java.util.HashSet; +import io.g365sfu.net.Outgoing; + /** * Это комната для звонков, она может быть как для двоих участников, так и для групповых звонков. * Комната содержит в себе информацию о том, на каком она SFU сервере, какой у нее ID, кто в ней участвует. @@ -77,7 +79,7 @@ public class Room { /** * 0x03 - SDP offer */ - buffer.put((byte)0x03); + buffer.put(Outgoing.SDP_OFFER_RETRANSLATE); buffer.putInt(this.roomId.getBytes().length); buffer.put(this.roomId.getBytes()); buffer.putInt(participantId.getBytes().length); @@ -111,7 +113,7 @@ public class Room { /** * 0x06 - ICE кандидат */ - buffer.put((byte)0x06); + buffer.put(Outgoing.ICE_CANDIDATE_RETRANSLATE); buffer.putInt(this.roomId.getBytes().length); buffer.put(this.roomId.getBytes()); buffer.putInt(participantId.getBytes().length); @@ -145,7 +147,7 @@ public class Room { /** * 0x07 - SDP answer */ - buffer.put((byte)0x07); + buffer.put(Outgoing.SDP_ANSWER_RETRANSLATE); buffer.putInt(this.roomId.getBytes().length); buffer.put(this.roomId.getBytes()); buffer.putInt(participantId.getBytes().length); diff --git a/src/main/java/io/g365sfu/SFU.java b/src/main/java/io/g365sfu/SFU.java index 7d26d5b..6296872 100644 --- a/src/main/java/io/g365sfu/SFU.java +++ b/src/main/java/io/g365sfu/SFU.java @@ -12,6 +12,8 @@ import java.util.function.Consumer; import io.g365sfu.exception.SFUException; import io.g365sfu.exception.SFUHandshakeException; +import io.g365sfu.net.Incoming; +import io.g365sfu.net.Outgoing; import io.g365sfu.net.SfuSock; import io.g365sfu.util.StrUtils; import io.g365sfu.webrtc.ICECandidate; @@ -89,7 +91,7 @@ public class SFU { return; } byte packetId = message.get(0); - if(packetId == 0x02) { + if(packetId == Incoming.ROOM_CREATE) { /** * Ответ на создание комнаты, который содержит ID созданной комнаты */ @@ -103,7 +105,7 @@ public class SFU { } return; } - if(packetId == 0x04) { + if(packetId == Incoming.ICE_CANDIDATE) { /** * ICE-candidate от сервера SFU для одного из участников комнаты */ @@ -125,7 +127,7 @@ public class SFU { } return; } - if(packetId == 0x05) { + if(packetId == Incoming.SDP_ANSWER) { /** * Ответ на Offer от сервера SFU, который содержит SDP Answer */ @@ -147,7 +149,7 @@ public class SFU { } return; } - if(packetId == 0x08) { + if(packetId == Incoming.SDP_OFFER) { /** * Offer от сервера SFU для одного из участников комнаты при renegotiation */ @@ -217,7 +219,7 @@ public class SFU { /** * 0x02 - создание комнаты */ - buffer.put((byte)0x02); + buffer.put(Outgoing.ROOM_CREATE); buffer.putInt(roomId.getBytes().length); buffer.put(roomId.getBytes()); buffer.flip(); diff --git a/src/main/java/io/g365sfu/net/Incoming.java b/src/main/java/io/g365sfu/net/Incoming.java new file mode 100644 index 0000000..c8630ff --- /dev/null +++ b/src/main/java/io/g365sfu/net/Incoming.java @@ -0,0 +1,19 @@ +package io.g365sfu.net; + +public class Incoming { + + public static final byte HANDSHAKE_OK = (byte) 0x01; + + public static final byte HANDSHAKE_FAILURE = (byte) 0xFF; + + public static final byte CONNECTION_ALIVE = (byte) 0xAE; + + public static final byte ICE_CANDIDATE = (byte) 0x04; + + public static final byte SDP_OFFER = (byte) 0x08; + + public static final byte SDP_ANSWER = (byte) 0x05; + + public static final byte ROOM_CREATE= (byte) 0x02; + +} diff --git a/src/main/java/io/g365sfu/net/Outgoing.java b/src/main/java/io/g365sfu/net/Outgoing.java new file mode 100644 index 0000000..d23d5df --- /dev/null +++ b/src/main/java/io/g365sfu/net/Outgoing.java @@ -0,0 +1,17 @@ +package io.g365sfu.net; + +public class Outgoing { + + public static final byte HANDSHAKE_EXCHANGE = (byte) 0x01; + + public static final byte CONNECTION_ALIVE = (byte) 0xAE; + + public static final byte ICE_CANDIDATE_RETRANSLATE = (byte) 0x06; + + public static final byte SDP_ANSWER_RETRANSLATE = (byte) 0x07; + + public static final byte SDP_OFFER_RETRANSLATE = (byte) 0x03; + + public static final byte ROOM_CREATE= (byte) 0x02; + +} diff --git a/src/main/java/io/g365sfu/net/SfuSock.java b/src/main/java/io/g365sfu/net/SfuSock.java index a993c4c..e396057 100644 --- a/src/main/java/io/g365sfu/net/SfuSock.java +++ b/src/main/java/io/g365sfu/net/SfuSock.java @@ -33,7 +33,7 @@ public class SfuSock extends WebSocketClient { return; } byte messageType = bytes.get(); - if(messageType == (byte)0x01) { + if(messageType == Incoming.HANDSHAKE_OK) { /** * Сервер ответил на рукопожатие, и мы можем считать его успешным */ @@ -41,7 +41,7 @@ public class SfuSock extends WebSocketClient { return; } - if(messageType == (byte)0xFF) { + if(messageType == Incoming.HANDSHAKE_FAILURE) { /** * Сервер отклонил рукопожатие, и мы должны считать его неудачным */ @@ -49,7 +49,7 @@ public class SfuSock extends WebSocketClient { return; } - if(messageType == (byte)0xAE) { + if(messageType == Incoming.CONNECTION_ALIVE) { /** * Сервер отправил сообщение о том, что соединение живое (ответ на проверку соединения), и мы можем считать его успешным */ @@ -103,7 +103,7 @@ public class SfuSock extends WebSocketClient { /** * 0x01 - код рукопожатия в соотвествии с протоколом g365sfu, за которым следует секретный ключ в виде строки байтов */ - buffer.put((byte)0x01); + buffer.put(Outgoing.HANDSHAKE_EXCHANGE); buffer.putInt(secretKey.getBytes().length); buffer.put(secretKey.getBytes()); buffer.flip(); @@ -133,7 +133,7 @@ public class SfuSock extends WebSocketClient { /** * 0x08 - код проверки соединения в соотвествии с протоколом g365sfu */ - buffer.put((byte)0xAE); + buffer.put(Outgoing.CONNECTION_ALIVE); buffer.flip(); this.send(buffer); try {