package main
import (
"github.com/gorilla/websocket"
"net/http"
)
var upgrader = websocket.Upgrader{
ReadBufferSize: 4096,
WriteBufferSize: 4096,
CheckOrigin: func(r *http.Request) bool {
return true
},
}
func wsHandler(w http.ResponseWriter, r *http.Request) {
// вот тут вы можете проверить login/password и прочее или же сделать для этого отдельный метод /login, а тут проверять лишь есть ли у него сессия
ws, err := upgrader.Upgrade(w, r, nil)
if _, ok := err.(websocket.HandshakeError); ok {
http.Error(w, "Not a websocket handshake", 400)
return
} else if err != nil {
return
}
ws_list.Append(ws, r) // вот тут вы уже знаете что сокет вам подходит и от какого он пользователя и дальше заносите его в какое-то хранилище которое их хранит и по которому потом рассылаете данные.
}
И опять таки, читайте документацию,
https://godoc.org/github.com/gorilla/websocket