尝试广播时出现PeerJS错误

时间:2016-05-29 17:56:42

标签: javascript node.js webrtc peerjs

我试图通过列出所有对等体并向每个对等体发送消息来在PeerJS中创建广播功能。我的客户端代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Test</title>
    <script src="http://cdn.peerjs.com/0.3/peer.js"></script>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
    <script type="text/javascript">
      const peer = new Peer({host: '127.0.0.1', port: 4982, path: '/', debug: 2});

      peer.on('open', function(id) {
        document.getElementById('peerId').innerHTML = id;
      });

      peer.on('connection', function(conn) {
        conn.on('data', function(data) {
          console.log(data);
        });
      });

      function bcast(message, id) {
        peer.listAllPeers(function(peers) {
          console.log(peers);

          // remove self from peer list
          peers.splice(peers.indexOf(id), 1);

          if (peers.length > 0) {
            peers.forEach(function(e, i) {
              let conn = peer.connect(e);
              conn.on('open', function() {
                conn.send(message);
              });
            });
            return true;
          }
          return false;
        });
      }
    </script>
  </head>
  <body>
    Peer ID: <p id="peerId"></p>
    <button type="button" onclick="bcast('hello', id)">Broadcast Hello Message</button>
  </body>
</html>

我的信令服务器代码如下:

var PeerServer = require('peer').PeerServer;
var server = PeerServer({port: 4982, path: '/', allow_discovery: true});

为了测试它,我启动服务器并打开两个浏览器选项卡,选项卡1和选项卡2.然后,我单击选项卡1中的“广播Hello消息”按钮。我希望&#39;你好&#39;要登录标签2,而不是出现此错误:

PeerJS:  WARNING Offer received for existing Connection ID: dc_eyxb5yz4k4eonyb4d0f3whfr
undefined:1 Uncaught (in promise) DOMException: Error processing ICE candidate
undefined:1 Uncaught (in promise) DOMException: Error processing ICE candidate
undefined:1 Uncaught (in promise) DOMException: Error processing ICE candidate

奇怪的是,如果我没有重新加载任何内容,如果我点击标签2 中的广播按钮,它会将其记录在标签1 中。我是WebRTC的新手,所以非常感谢任何帮助。

0 个答案:

没有答案