这个golang socket.io示例中的mux是否必要?

时间:2013-10-16 16:47:42

标签: go socket.io

在我正在制作的应用中,用户始终是“游戏”的一部分。我想设置一个socket.io服务器来与游戏中的用户进行通信。我打算使用http://godoc.org/github.com/madari/go-socket.io go-socket.io,它定义了newSocketIO函数来创建一个新的socketio实例。

我没有创建一个socketio实例,而是认为可以创建一个将游戏ID映射到socket.io实例的地图,并配置它们以便他们监听代表游戏ID的URL。

这样,我可以使用广播和广播等方法在一场比赛中向所有玩家广播。但是,我必须为每个游戏开始一个新的goroutine,我不知道它们的性能特征是否可以扩展,因为单个socketio实例的请求率将非常低,大约1 /在高峰时间秒,但连接可能在其他时间空闲几十秒(心跳除外,可能还有socket.io协议指定的其他通信)。

我最好创建1个socket.io实例,并跟踪哪些连接属于哪些游戏?

1 个答案:

答案 0 :(得分:3)

  

我必须为每场比赛开一个新的goroutine,而且我不太了解他们的表现特征,知道这是否可扩展

消防,Go调度程序可以有效地处理数千甚至数百万个goroutines。

Go标准库中的默认net/http服务器为每个客户端生成一个goroutine。

请记住,一旦他们完成工作,就要从你的goroutines回来。否则,你最终会遇到很多过时的事情。

  

我最好创建1个socket.io实例,并跟踪哪些连接属于哪些游戏?

我没有参与该项目,但如果它遵循Go的#em>"得到完成" 哲学,那么它不应该物。您可以通过分析这两种方法找出更好的方法。