为什么Peer.js在我调用connection.send()后会断开连接



我正在开发一个简单的双向通信网站。它使用Peer.js进行对等浏览器通信。我从这个演示中提取了很多代码:https://jmcker.github.io/Peer-to-Peer-Cue-System/.问题是,在我调用sendMessage((在浏览器之间发送数据后,它们会断开连接。我相信数据已经发送,但从未收到,因为我一尝试发送数据,连接就被切断了。下面是主机设备的代码:

var peer;
var lastPeerId;
var conn;
function initialize() {
// Create own peer object with connection to shared PeerJS server
peer = new Peer(null, {
debug: 0
});
peer.on('open', function (id) {
// Workaround for peer.reconnect deleting previous id
if (peer.id === null) {
console.log('Received null id from peer open');
peer.id = lastPeerId;
} else {
lastPeerId = peer.id;
}
console.log("ID: " + peer.id);
console.log("Awaiting connection.")
});
peer.on('connection', function (c) {
// Allow only a single connection
if (conn) {
c.on('open', function () {
c.send("Already connected to another client");
setTimeout(function () {
c.close();
}, 500);
});
return;
}
conn = c;
console.log("Connected to: " + conn.peer);
ready();
});
peer.on('disconnected', function () {
console.log('Connection lost. Please reconnect');
// Workaround for peer.reconnect deleting previous id
peer.id = lastPeerId;
peer._lastServerId = lastPeerId;
peer.reconnect();
});
peer.on('close', function () {
conn = null;
console.log('Connection destroyed');
});
peer.on('error', function (err) {
console.log(err);
});
};
function ready() {
conn.on('data', function (data) {
console.log("Data recieved");
console.log("Received: " + data);
});
conn.on('close', function () {
console.log("Connection reset. Awaiting connection...");
conn = null;
//start(true);
});
}
function sendMessage(message) {
if (conn && conn.open) {
conn.send(message);
console.log("Sent: " + message);
} else {
console.log('Connection is closed');
}
}
initialize();

这是连接设备(而不是主机(的代码

var peer;
var lastPeerId;
var conn;
//Get the ID specified in the address after the "?" sign
var idToConnectTo = window.location.href.split("?")[1];
function initialize() {
// Create own peer object with connection to shared PeerJS server
peer = new Peer(null, {
debug: 0
});
peer.on('open', function (id) {
// Workaround for peer.reconnect deleting previous id
if (peer.id === null) {
console.log('Received null id from peer open');
peer.id = lastPeerId;
} else {
lastPeerId = peer.id;
}
console.log('ID: ' + peer.id);
join();
});
peer.on('disconnected', function () {
console.log('Connection lost. Please reconnect');
// Workaround for peer.reconnect deleting previous id
peer.id = lastPeerId;
peer._lastServerId = lastPeerId;
peer.reconnect();
});
peer.on('close', function () {
conn = null;
console.log('Connection destroyed');
});
peer.on('error', function (err) {
console.log(err);
});
};
function join() {
// Close old connection
if (conn) {
conn.close();
}
// Create connection to destination peer specified in the input field
conn = peer.connect(idToConnectTo, {
reliable: true
});
conn.on('open', function () {
console.log("Connected to: " + conn.peer);
});
// Handle incoming data
conn.on('data', function (data) {
console.log("Received: " + data);
});
conn.on('close', function () {
console.log("Connection closed");
});
};
function sendMessage(message) {
if (conn && conn.open) {
conn.send(message);
console.log("Sent: " + message);
} else {
console.log('Connection is closed');
}
}
initialize();

如有任何帮助,我们将不胜感激。谢谢

我认为问题是我试图在同一浏览器的两个选项卡之间进行通信。当使用两种不同的浏览器时,它工作正常。

相关内容

最新更新