Отправка сообщения через websocket golang
Всем привет! Только учусь программировать, не судите строго=) Впервые столкнулся с вебсокетами, ни разу не настраивал Задача простая: произвести соединение и отправить сообщение пользователю
Начитавшись на просторах интернета, получается что то вот такое
Подключение
func echo(w http.ResponseWriter, r *http.Request) {
con, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("upgrade:", err)
return
}
defer con.Close()
for {
mt, message, err := con.ReadMessage()
if err != nil {
log.Println("read:", err)
break
}
log.Printf("recv: %s", message)
err = con.WriteMessage(mt, message)
if err != nil {
log.Println("write:", err)
break
}
}
}
func main() {
flag.Parse()
log.SetFlags(0)
http.HandleFunc("/echo", echo)
}
Отправка сообщения из метода
jsonData, _ := json.Marshal(data)
users := make(map[string]*websocket.Conn)
_ = users[uid].WriteJSON(jsonData)
Как вы понимаете, это не работает и я в каком то ступоре. Подскажите пожалуйста, я вообще в правильном направлении действую? Уверен что кто то уже делал такую самую простую настройку, отзовитесь пожалуйста)
Ответы (1 шт):
Это пример из Gorilla WebSocket, echo сервер.
https://github.com/gorilla/websocket/tree/master/examples/echo
Браузер получает от сервера веб страницу со скриптом, скрипт устанавливает с сервером вебсокетное соединение, отправляет серверу сообщение и тут же получает его обратно. Чтобы выполнить пример нужно произвести несколько простых действий:
Перенести к себе файл
websocket/examples/echo/server.go. Этого достаточно.Запустить сервер
$ go run server.goОткрыть в браузере страничку сервера (http://127.0.0.1:8080), нажать кнопку OPEN. В этот момент браузер запросит соединение с сервером, соединение установится и вы это увидите. Обратите внимание что запрос, происходит не из кода на Go, а из скрипта JavaScript (78 строка сервера), т.е. из самого браузера
ws = new WebSocket("{{.}}");. Принимается же запрос в 23 строке сервера именно в гошном приложенииc, err := upgrader.Upgrade(w, r, nil).
Далее, после установки соединения, обе стороны запускают соответствующую случаю логику отправки, обработки и получения сообщений.
- Отправить кнопкой Send серверу свое сообщение (Hello world!).