注意:我对理解一般的Go概念/模式更感兴趣,而不是解决这个人为的例子 .
Go(golang)WebSocket包提供了一个简单的echo server example,它压缩成这样的东西:
func EchoServer(ws *websocket.Conn) { io.Copy(ws, ws); }
func main() {
http.Handle("/echo", websocket.Handler(EchoServer));
http.ListenAndServe(":12345", nil);
}
服务器处理同时连接,我试图通过回显所有连接客户端的输入将其升级到基本聊天服务器 .
我如何为每个打开的连接提供EchoServer处理程序访问权限?
1 回答
一个快速的几乎功能性的例子来给你一个想法
这将启动一个侦听两个通道的goroutine,一个用于添加新连接,另一个用于发送到所有活动连接的消息 .
somekindofstorage
可以是 Map 或矢量 .编辑:
或者,您可以将所有连接存储在全局映射中,并从
EchoServer
写入每个连接 . 但是 Map 不是为了同时访问而设计的 .