2016-01-20 2 views
2

Я пытаюсь использовать PeerJS (библиотеку webRTC) для игры и triyng для использования сервера, который они предоставляют для выполнения поиска пользователей. Я хочу управлять списком подключенных пользователей, и я борюсь с сервером PeerJS.Как получить список подключенных пользователей на сервере 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 сервер, он работает, как ожидалось (я получаю строку идентификатор партнера), и я могу доступ к подключенным аналогам по адресу 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 сервера работать с курьерским? Регрессия относительно экспресс-совместимости?

Большое спасибо :)


Система информация о:

  • node -v : v0.10.25
  • Ubuntu 14,04
  • peerJS сервер, установленный из GitHub с: npm install peers/peerjs-server (версия: "0.2.8")

ответ

0

Вы можете использовать недокументированные listAllPeers(function cb(list){}) функцию, если вы используете свой собственный peerjs-сервер.

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

это должно работать

Смежные вопросы