在我正在制作的应用程序中,用户始终是“游戏”的一部分。我想设置一个 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 实例并跟踪哪些连接属于哪些游戏会更好吗?