3

我正在尝试将 PeerJS(一个 webRTC 库)用于游戏,并尝试使用他们提供的服务器来进行用户发现。我想管理已连接用户的列表,但我正在努力使用 PeerJS 服务器。

在文档中,他们说我们可以在同一个应用程序中拥有 PeerJs 和 Express 服务器。

这是代码:

# this doesn't work
var express = require('express');
var app = express();
var ExpressPeerServer = require('peer').ExpressPeerServer;

app.get('/', function(req, res, next) { res.send('Hello world!'); });

var server = app.listen(9000);

var options = {
    debug: true,
    allow_discovery: true
}

app.use('/api', ExpressPeerServer(server, options));

server.on('connection', function(id) {
    # we get a socket object as id :( 
    # should be a string
    console.log(id)
});

server.on('disconnect', function(id) { console.log(id + "deconnected") });

然而,当用户连接时,我得到一个socket对象id,这不是我想要的。我也无法通过 url 访问已连接的对等方http://localhost:9000/peerjs/peers


奇怪的是,仅使用 PeerJS 服务器,它按预期工作(我得到了对等点的字符串 ID),并且我可以通过 url 访问连接的对等点http://localhost:9000/peerjs/peers

# this works 
var ip = require('ip');
var PeerServer = require('peer').PeerServer;

var port = 9000;
var server = new PeerServer({port: port, allow_discovery: true});

server.on('connection', function (id) {
  # id is correct (a string)
  console.log('new connection with id ' + id);
});

server.on('disconnect', function (id) {
  console.log('disconnect with id ' + id);
});

console.log('peer server running on ' +
            ip.address() + ':' + port);

使 PeerJS 服务器与 express 一起工作的任何线索?这是关于表达兼容性的回归吗?

非常感谢 :)


系统信息:

  • node -v : v0.10.25
  • Ubuntu 14.04
  • peerJS 服务器从 github 安装:(npm install peers/peerjs-server版本:“0.2.8”)
4

4 回答 4

3
var app = express();
var server = app.listen(8000);
var q = ExpressPeerServer(server, options);
app.use('/peer', q);
q.on('connection', function (id) {
    console.log('user with ', id, 'connected');
});

这应该工作

于 2016-11-23T14:58:55.593 回答
1

listAllPeers(function cb(list){})如果您运行自己的 peerjs-server,则可以使用未记录的功能。

于 2016-05-05T11:24:59.307 回答
1

万一有人遇到同样的问题,您需要做的就是:

server.on('disconnect', function (client) 
{
    // this will give you id in text or whatever format you are using
    console.log('disconnect with id ' + client.id);
});
于 2020-05-25T10:57:16.080 回答
0

只是在这里参考您自己的答案:https ://github.com/peers/peerjs-server/issues/86

并结合 SocketIO:http ://stephantabor.com/2015/07/11/express-peerjs-and-socket-io/

于 2016-02-03T12:25:32.670 回答