gpt4 book ai didi

android - 在 Heroku 上使用 node.js 的 Pusher/PubNub 替代方案

转载 作者:行者123 更新时间:2023-11-30 03:26:07 32 4
gpt4 key购买 nike

我想使用 node.js 构建自己的多人游戏服务器,并将代码部署到 Heroku 上。我的问题是,如果我描述的那样是可能的:)

我希望来自 Android 游戏的玩家能够连接到速度非常快(不一定是实时)的游戏服务器。游戏服务器应该能够将它们分组到房间( channel )中,并且当它们在房间中时,它们应该能够发布和订阅。也就是说,我希望玩家通过 node.js 服务器交换游戏信息。

在服务器上,node.jsws应该用于让 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 等服务,对吧?必须添加 channel 、身份验证等。

如果上面的代码可以实现,它是否也适用于 Heroku?

  1. 拥有多个测功机怎么样?它们共享公共(public)内存 (clientList) 还是我必须在它们之间同步?如何?使用 cluster API
  2. 大概希望在一个测功机上工作的客户数量是多少?每个 dyno 100 个并发用户是否期望太多?

最佳答案

如果你想使用WAMP (通过 Autobahn 库或 others 之一)然后您可以查看 wamp.io - 一个 nodejs WAMP 实现。

关于android - 在 Heroku 上使用 node.js 的 Pusher/PubNub 替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18229077/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com