我很难理解我使用博客所做的事情的实现
我正在创建一个新的 websocket 连接,其中我正在运行一个无限循环
据我了解
无论 websocket 收到什么消息,无限循环都应该无限期地运行
但事实并非如此,它内部的逻辑只有在从前端 ws 连接发送“新的有效负载/消息”时才会触发:
func (s *SocketHandlers) NewConnectionHandler(w http.ResponseWriter, r *http.Request) {
// upgrade the http request to a ws request
ws, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Fatal(err)
}
defer ws.Close()
for { // infinite loop
log.Println("Checking to see if this repeats") // <=== PRINTS ONLY ONCE!
var payload core.NewSessionPayload
if err := ws.ReadJSON(&payload); err != nil {
log.Println("Cannot read socket conection payload")
log.Fatal(err)
}
s.clientsMap[ws] = core.ClientNode{
Active: true,
Username: payload.Username,
}
// broadcast the latest users list to all the users
s.broadcaster <- payload.Username
}
}
一只萌萌小番薯
相关分类