Логичная структура пакетов без магических чисел
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
19
src/main/java/io/g365sfu/net/Incoming.java
Normal file
19
src/main/java/io/g365sfu/net/Incoming.java
Normal file
@@ -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;
|
||||
|
||||
}
|
||||
17
src/main/java/io/g365sfu/net/Outgoing.java
Normal file
17
src/main/java/io/g365sfu/net/Outgoing.java
Normal file
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user