Добавление и обработка событий Peer_disconnected и Room_Delete
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"g365sfu/bytebuffer"
|
||||
"g365sfu/logger"
|
||||
"g365sfu/network"
|
||||
"g365sfu/sfu"
|
||||
connection "g365sfu/socket/struct"
|
||||
"g365sfu/utils"
|
||||
@@ -68,7 +69,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
// Логика обработки байтов
|
||||
buffer := bytebuffer.Wrap(bytes)
|
||||
packetId, _ := buffer.Get()
|
||||
if packetId == 0x01 {
|
||||
if packetId == byte(network.HANDSHAKE) {
|
||||
// Это рукопожатие, дальше сравниваем секретные ключи
|
||||
secretLength, _ := buffer.GetUint32()
|
||||
|
||||
@@ -78,13 +79,17 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
AddSocket(connection)
|
||||
// Подготовка ответа для клиента о успешном рукопожатии
|
||||
response := bytebuffer.Allocate(1)
|
||||
response.Put(0x01)
|
||||
response.Put(byte(network.HANDSHAKE_SUCCESS))
|
||||
response.Flip()
|
||||
// Отправляем ответ клиенту
|
||||
connection.WriteBinary(response.Bytes())
|
||||
continue
|
||||
}
|
||||
connection.WriteBinary([]byte{0xFF})
|
||||
response := bytebuffer.Allocate(1)
|
||||
response.Put(byte(network.HANDSHAKE_FAILURE))
|
||||
response.Flip()
|
||||
// Отправляем ответ клиенту
|
||||
connection.WriteBinary(response.Bytes())
|
||||
logger.LogWarnMessage("failed handshake from " + connection.Socket.RemoteAddr().String() + " because of invalid secret key")
|
||||
connection.Close()
|
||||
return
|
||||
@@ -98,7 +103,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
}
|
||||
|
||||
// Создание комнаты
|
||||
if packetId == 0x02 {
|
||||
if packetId == byte(network.ROOM_CREATE) {
|
||||
roomLength, _ := buffer.GetUint32()
|
||||
roomIDBytes, _ := buffer.GetBytes(int(roomLength))
|
||||
roomID := string(roomIDBytes)
|
||||
@@ -106,7 +111,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
logger.LogSuccessMessage("room initializated " + room.RoomID)
|
||||
// Подготовка ответа для клиента с ID комнаты
|
||||
response := bytebuffer.Allocate(1 + 4 + len([]byte(room.RoomID)))
|
||||
response.Put(0x02)
|
||||
response.Put(byte(network.ROOM_CREATE_SUCCESS))
|
||||
response.PutUint32(uint32(len([]byte(room.RoomID))))
|
||||
response.PutBytes([]byte(room.RoomID))
|
||||
response.Flip()
|
||||
@@ -116,7 +121,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
}
|
||||
|
||||
//SDP OFFER для подключения к комнате
|
||||
if packetId == 0x03 {
|
||||
if packetId == byte(network.SDP_OFFER) {
|
||||
roomIdLen, _ := buffer.GetUint32()
|
||||
roomIDBytes, _ := buffer.GetBytes(int(roomIdLen))
|
||||
roomID := string(roomIDBytes)
|
||||
@@ -145,7 +150,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
answerBytes, _ := json.Marshal(answer)
|
||||
// Подготовка ответа для клиента с SDP answer
|
||||
response := bytebuffer.Allocate(1 + 4 + len([]byte(roomID)) + 4 + len([]byte(peerID)) + 4 + len(answerBytes))
|
||||
response.Put(0x05)
|
||||
response.Put(byte(network.SDP_ANSWER))
|
||||
response.PutUint32(uint32(len([]byte(roomID))))
|
||||
response.PutBytes([]byte(roomID))
|
||||
response.PutUint32(uint32(len([]byte(peerID))))
|
||||
@@ -159,7 +164,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
}
|
||||
|
||||
//ICE-candidate пришел от участника комнаты
|
||||
if packetId == 0x06 {
|
||||
if packetId == byte(network.ICE_CANDIDATE) {
|
||||
roomIdLen, _ := buffer.GetUint32()
|
||||
roomIDBytes, _ := buffer.GetBytes(int(roomIdLen))
|
||||
roomID := string(roomIDBytes)
|
||||
@@ -182,7 +187,7 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
}
|
||||
|
||||
// SDP ANSWER от клиента при renegotiation
|
||||
if packetId == 0x07 {
|
||||
if packetId == byte(network.SDP_ANSWER_RENEGOTIATION) {
|
||||
roomIdLen, _ := buffer.GetUint32()
|
||||
roomIDBytes, _ := buffer.GetBytes(int(roomIdLen))
|
||||
roomID := string(roomIDBytes)
|
||||
@@ -204,10 +209,10 @@ func processData(data <-chan []byte, connection *connection.Connection) {
|
||||
}
|
||||
}
|
||||
//Check life для проверки соединения с сервером SFU
|
||||
if packetId == 0xAE {
|
||||
if packetId == byte(network.CHECK_LIFE) {
|
||||
// Подготовка ответа для клиента о том, что соединение живо
|
||||
response := bytebuffer.Allocate(1)
|
||||
response.Put(0xAE)
|
||||
response.Put(byte(network.CHECK_LIFE_SUCCESS))
|
||||
response.Flip()
|
||||
// Отправляем ответ клиенту
|
||||
connection.WriteBinary(response.Bytes())
|
||||
|
||||
Reference in New Issue
Block a user