我想使用node.js构建自己的多人游戏服务器并将代码部署在Heroku上。我的问题是,如果我所描述的可能是这样的:)
我希望Android游戏的玩家能够连接到非常快速(不一定是实时)的游戏服务器。游戏服务器应该能够将它们分组到房间(频道)中,并且当它们在房间中时,它们应该能够发布和订阅。这意味着,我希望玩家通过 node.js 服务器交换游戏信息。
在服务器上,使用带有ws的node.js让WebSocket服务器监听客户端事件,如下所示:
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: 8080 });
var clientList = {};
wss.on('connection', function(ws) {
ws['AUTH'] = getGUID();
clientList[ws['AUTH']] = ws; // ws['AUTH'] has joined the server
ws.on('message', function(message) {
for (var clientID in clientList) {
clientList[clientID].send(message);
}
});
ws.on('close', function() {
delete clientList[ws['AUTH']]; // ws['AUTH'] has left the server
}
ws.send('something');
});
function getGUID() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
在客户端,我想使用autobahn.ws(哪个部分?WAMP?PubSub 还是 RPC?)与这个游戏服务器通信。
如果这可行,那么只需几行代码就可以拥有Pusher 和 PubNub 等服务提供的非常基本的版本,对吧?必须添加通道、身份验证等。
如果上面的代码可以做到这一点,它是否也适用于 Heroku?
- 拥有多个测功机怎么样?它们是否共享共同的内存 (
clientList
) 还是我必须在它们之间同步?如何?使用集群 API? - 您粗略预计在单个测功机上工作的客户数量是多少?每个测功机 100 个并发用户是否期望过高?