我正在评估PeerJS,以实现一个简单的两人在线游戏。看来,一旦我将一个玩家的连接的id转移给了另一个玩家,他们就可以通过PeerJS打开一个 channel ,而且还不错。

但是,如果有两个不认识的玩家想比赛,那么在那里进行比赛的最优雅的方法是什么?有没有一种方法可以要求PeerJS经纪人提供所有已连接客户端的列表,并可能附带一些元数据(例如“status:want-to-play”)?或者是向所有客户广播的一种方法?

最佳答案

使用PeerServer可以捕获两个事件connectiondisconnect。使用此功能,您可以创建一个内部列表,然后可以从中获取应用程序。
部分示例:

var PeerServer = require('peer').PeerServer;
var server = new PeerServer({port: 9000, path: '/myapp'});
var connected = [];
server.on('connection', function (id) {
  var idx = connected.indexOf(id); // only add id if it's not in the list yet
  if (idx === -1) {connected.push(id);}
});
server.on('disconnect', function (id) {
  var idx = connected.indexOf(id); // only attempt to remove id if it's in the list
  if (idx !== -1) {connected.splice(idx, 1);}
});
someexpressapp.get('/connected-people', function (req, res) {
  return res.json(connected);
});
然后,在您的客户端代码中,您可以AJAX /connected-people并使用该列表。
对于元数据,您可以在上面的代码上进行扩展以添加用户状态以及更新该状态的方法。
希望这可以帮助!
编辑在编写本文时,该事件名为connect。现在将其命名为connection
(此外,我现在将与PeerJS一起玩大约六个小时。我希望您意识到自己的工作。)

10-05 23:12