推杆/ PubNub替代使用Heroku上的node.js

我想用node.js构build我自己的多人游戏服务器,并在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提供的服务,对不对? 人们必须添加渠道,authentication等

如果这可能在上面的代码中,它也可以在Heroku上工作吗?

  1. 怎么样有多个dynos ? 他们共享公共内存( clientList )还是必须在它们之间进行同步? 怎么样? 使用群集API ?
  2. 大概期望在单个测功机上工作多less个客户端? 每个Dyno 100个并发用户期望太多?

如果你想使用WAMP (通过一个高速公路库或其他 ),那么你可以看看wamp.io – 一个nodejs WAMP实现。