2017-04-20 48 views
0

我跑ExpressPeerServer同伴發現與peerjs

var express = require('express'); 
var app = express(); 
var ExpressPeerServer = require('peer').ExpressPeerServer; 

app.get('/', function(req, res, next) { 
    console.log("get /") 
    res.send(connected); 
}); 

var server = app.listen(9000); 
var options = { 
    debug: true, 
    allow_discovery: true 
}; 

var connected = []; 


peerServer = ExpressPeerServer(server, options) 
app.use('/bwallet', peerServer); 

peerServer.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);} 
    console.log(connected); 
}); 
peerServer.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);} 
    console.log(connected); 
}); 
server.on('disconnect', function(id) { 
    console.log(id + " disconnect") 
}); 

是否有客戶端的事件,其中對可收聽知道訂閱其他連接對端(我知道我可以實現socket.io,但更喜歡信令服務器將處理它。)? 我不希望在性能問題的間隔上得到'/'。 peer.listAllPeers()也返回undefined。

回答

0

如果我正確理解你的問題,你需要一個客戶端事件(無需實現你自己的Socket.io解決方案)來知道另一個對象是否連接(以便客戶端可以連接到它)。

一種解決方案可能是在服務器上創建並連接一個主對等點,並啓動一個固定的對等點(稱爲'MASTER')。現在所有的客戶端連接到MASTER。無論何時新對等體連接,MASTER都將對等體ID廣播到所有連接的對等體(客戶機)。

客戶端應該監聽來自MASTER對等方的'data'事件。

+0

我PR公關peerjs和peerjs表達服務器添加對對象發現的支持。 –