Я новичок в Golang, я пытаюсь создать сервер WebSocket, который будет передавать сообщения подключенным клиентам.Сообщения здесь будут генерироваться со стороны сервера (путем создания клиента по умолчанию).
Вот мой client.go
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("dial:", err)
}
defer c.Close()
done := make(chan struct{})
new_chan := make(chan string)
//defer new_chan.Stop()
go func() {
for {
new_chan <- "my message"
}
}()
hub := newHub()
go hub.run()
client := &Client{hub: hub, ws: c, send: make(chan []byte, 256)}
for {
select {
case <-done:
return
case t := <-new_chan:
err := c.WriteMessage(websocket.TextMessage, []byte(t))
if err != nil {
log.Println("write:", err)
return
}
log.Printf(t)
client.hub.broadcast <- bytes.TrimSpace(bytes.Replace([]byte(t), newline, space, -1))
}
}
эта функция будет генерировать сообщения и пытаться транслировать надругие клиенты.
server.go добавит клиентов в хаб
func echo(w http.ResponseWriter, r *http.Request) {
c, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Print("upgrade:", err)
return
}
hub := newHub()
go hub.run()
client := &Client{hub: hub, ws: c, send: make(chan []byte, 256)}
client.hub.register <- client
go client.writePump()
writePump () здесь будет прослушивать канал client.send и широковещательные сообщения. Теперь хаб подключенного клиента другойэто из хаба клиента на сервере.Поэтому, когда я пытаюсь отправить сообщения, я ничего не получаю.Как сделать так, чтобы он принадлежал одному и тому же хабу (контексту)?