@lucifer-m
golang php js html css

Как юзать WebSocket?

Добрый день. Я знаю что необходимо сделать пул коннектов var clients map[string]*websocket.Conn

и потом слать сообщения всем в цикле как то так
for _, v := range clients {
    websocket.JSON.Send(v, message)
  }


Но обьяните мне как при подключении клиент может отправить свой login для занесения в пул. Зарание спасибо.
  • Вопрос задан
  • 762 просмотра
Решения вопроса 2
mututunus
@mututunus
Backend developer (Python, Golang)
Ответ написан
Комментировать
@mantyr
Пишу много Golang кода с удовольствием:)
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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы