我在服务器控制台的标题中收到错误消息。 当然,一开始我尝试不运行我自己的服务器,但后来它只是默默地失败了(即它似乎连接但从未打开连接)。 所有这些都在本地主机上运行。
客户端代码:
var peer
var conn
if (window.location.pathname == '/client') {
peer = new Peer('tactiks_guestb', {
host: 'localhost',
port: 8081,
path: '/peerjs'
})
conn = peer.connect('tactiks_hostb')
conn.on('open', () => {
conn.send('hi!');
});
this.peer = peer
this.conn = conn
conn.on('error', console.log)
peer.on('error', console.log)
} else {
peer = new Peer('tactiks_hostb', {
host: 'localhost',
port: 8081,
path: '/peerjs'
})
this.peer = peer
peer.on('error', console.log)
peer.on('connection', (conn) => {
conn.on('error', console.log)
this.conn = conn
conn.on('data', (data) => {
console.log(data)
})
})
}
服务器端代码:
var express = require('express')
var app = express()
srv = app.listen(8081)
var ExpressPeerServer = require('peer').ExpressPeerServer;
var ps = ExpressPeerServer(srv, {
debug: true
})
app.use('/peerjs', ps)
ps.on('connection', (id) => {
console.log(id)
console.log(srv._clients)
})
@kahrkunne您在客户端/服务器上使用哪个版本?
我在服务器中遇到了同样的错误。 我在客户端上使用 Peer Server 0.2.10 版和 Peerjs 1.1.0 版。 服务器在 Electron 中运行,客户端在浏览器中运行(测试 Chrome 77.0.3865.120 和 Firefox 69.0.3)。
当客户端调用 peer.connect(peerID); 时发生错误。 与服务器连接。
错误来自 peer\lib\util.js:27,可追溯到 peer\lib\server.js 第 91 行
if 语句始终解析为 else 并显示 util.prettyError,即使在消息是 CANDIDATE 或 OFFER 的情况下也是如此。
socket.on("message", function(data) {
try {
var message = JSON.parse(data);
if (
["LEAVE", "CANDIDATE", "OFFER", "ANSWER"].indexOf(message.type) !== -1
) {
self._handleTransmission(key, {
type: message.type,
src: id,
dst: message.dst,
payload: message.payload
});
} else {
util.prettyError("Message unrecognized");
}
} catch (e) {
self._log("Invalid message", data);
throw e;
}
});
util.prettyError("Message unrecognized");
}
} catch (e) {
self._log("Invalid message", data);
throw e;
}
更新:我更新了所有依赖项并再次运行。 我仍然收到错误消息,但现在似乎只发生在 HEARTBEAT 上。 CANDIDATE 和 OFFER 正在按预期工作。
["LEAVE", "CANDIDATE", "OFFER", "ANSWER"] 在这个数组中添加缺少的消息名称....在 Peerjs 的情况下,HEARTBEAT 不存在。
因此,在将 HEARTBEAT 添加为 ["LEAVE", "CANDIDATE", "OFFER", "ANSWER","HEARTBEAT" ] 后解决了我的问题。
这个问题会很快得到解决吗?
最有用的评论
["LEAVE", "CANDIDATE", "OFFER", "ANSWER"] 在这个数组中添加缺少的消息名称....在 Peerjs 的情况下,HEARTBEAT 不存在。
因此,在将 HEARTBEAT 添加为 ["LEAVE", "CANDIDATE", "OFFER", "ANSWER","HEARTBEAT" ] 后解决了我的问题。