48 lines
1013 B
Go
48 lines
1013 B
Go
package socket
|
||
|
||
import (
|
||
"fmt"
|
||
"net/http"
|
||
|
||
"github.com/gorilla/websocket"
|
||
)
|
||
|
||
var upgrader = websocket.Upgrader{
|
||
ReadBufferSize: 1024,
|
||
WriteBufferSize: 1024,
|
||
CheckOrigin: func(r *http.Request) bool {
|
||
// Разрешаем со всех origin
|
||
return true
|
||
},
|
||
}
|
||
|
||
// Обработчик WebSocket соединений
|
||
func HandleWebSocket(w http.ResponseWriter, r *http.Request) {
|
||
conn, _ := upgrader.Upgrade(w, r, nil)
|
||
defer conn.Close()
|
||
|
||
// Канал для передачи байтов
|
||
dataChan := make(chan []byte)
|
||
|
||
// Запуск обработчика в горутине
|
||
go processData(dataChan)
|
||
|
||
for {
|
||
messageType, p, err := conn.ReadMessage()
|
||
if err != nil || messageType != websocket.BinaryMessage {
|
||
break
|
||
}
|
||
// Передача байтов для обработки
|
||
dataChan <- p
|
||
}
|
||
}
|
||
|
||
func processData(data <-chan []byte) {
|
||
for bytes := range data {
|
||
// Логика обработки байтов
|
||
if bytes[0] == 0x01 {
|
||
fmt.Print("Type 0x01 received")
|
||
}
|
||
}
|
||
}
|