我正在尝试将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
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');
});
这应该工作