我正在尝试将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访问连接的对等 Node

奇怪的是,仅使用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
  • 从GitHub安装的
  • peerJS服务器:npm install peers/peerjs-server(版本:“0.2.8”)
  • 最佳答案

    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');
    });
    

    这应该工作

    09-25 18:42