您好我正在尝试使用 node.js 和 socket.io 构建一个实时多人游戏。
现在,在编码方面实现本身不会有太大问题,但是来自传统的 http 请求-响应 Web 编程模型,我不知道这在流量和服务器负载方面会有多昂贵。基本上在游戏过程中,玩家的浏览器应该实时跟踪鼠标输入事件,并不断将它们广播给同一游戏中的所有其他玩家。
这是一个例子,假设我的头像在屏幕上跟随我的鼠标指针,它应该实时广播给屏幕上的其他玩家。我会做类似的事情:
// client side
$(document).on("mousemove", function(event){
io.emit("coordinate", {x: event.pageX, y: event.pageY});
});
在服务器上:
// server side
io.sockets.on("connection", function(socket){
...
socket.on("coordinate", function(coordinate){
socket.get("username", function(err, username){
socket.broadcast.emit("move", {username: username, coordinate:coordinate});
});
});
...
});
我认为这应该可行,但这需要浏览器每秒向服务器发送几个事件,服务器随后应将它们广播给同一游戏中的其他玩家,我担心这会带来什么影响。但有一件事是,正在传输的每个数据片段的大小并没有那么大(基本上它只是一个 x 和 y 坐标)。如果这太贵了,无论这游戏多么出色,我都认为我无法发布它。谁能启发我?谢谢你。
[编辑]为了澄清,我不是在问如何使这个架构更高效。我只是想知道这种类型的系统在系统负载(和维护成本)方面是否足够现实 对于普通的 Web 服务,我可以通过查看页面浏览量来估计成本,但 websocket 是一个全新的领域,我不知道的,所以我想问。