我运行ExpressPeerServer
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 :(得分:0)
如果我正确理解了您的问题,您需要一个客户端事件(不实现您自己的Socket.io解决方案)来了解何时连接另一个对等方(以便客户端可以连接到它)。
一种解决方案可能是创建并连接服务器启动时的主对等体和固定的对等ID(例如' MASTER')。现在所有客户端都连接到MASTER。每当新对等体连接时,MASTER就会向所有连接的对等体(客户端)广播peer-id。
客户应该听取数据'来自MASTER同行的活动。