Example/Explanation 在 chrome.sockets.udp 多播

Example/Explanation on chrome.sockets.udp multicasting

我正在制作一个 Chrome 应用程序,它将具有 'chat' 功能(例如 this app has). When a user joins the chat (by connecting to a port), the user would receive all messages that were created during his/her session. However, although I understand most of the app's code,我不明白代码的多播部分是如何工作的。

据我了解,它应该是这样的:

var socket = 0;
chrome.sockets.udp.create({bufferSize: 1024 * 1024}, function (createInfo) //Create socket entry
{
   socket = createInfo.socketId;
   console.log(socket); //This works - tells me an integer
   var ttl = 12;
   chrome.sockets.udp.setMulticastTimeToLive(socket, ttl, function (result)
   {
      if(result < 0)
      {
        console.log("MULTICAST FAILED" + result);
      }
      else
      {
        chrome.sockets.udp.bind(socket, "0.0.0.0", 8080, function(result) //Bind to socket
        {
          if(result < 0)
          {
            console.log("BIND FAILED" + result);
            chrome.sockets.udp.close(socket);
          }
          else
          {
            chrome.sockets.udp.joinGroup(socket, "237.132.123.123", function(result) //join Multicast group
            {
              if(result < 0)
              {
                console.log("Couldn't join Group!");
                chrome.sockets.udp.close(socket);
              }
              else
              {
                console.log("GOT HERE");          //Outputs this

                chrome.sockets.udp.onReceive.addListener(function(msg)  //Listen for receiving messages
                {
                  console.log(msg.socketId);
                })
                chrome.sockets.udp.onReceiveError.addListener(function(error)   //If error while receiving, do this
                {
                  console.log(error.socketId + " " + error.resultCode);
                });
              }
            })
          }
        });


      }
    })


  })
//Later in the code (linked to a button I press (and when app closes)
chrome.sockets.udp.close(socket);

这个问题是,虽然代码到达了.send()的回调函数(这应该意味着它发送成功),但我在绑定时也出现错误,说套接字不存在(虽然我创建它并且套接字号输出一个整数)。当我使用与上面相同的代码创建两个应用程序并尝试使它们彼此 listen/send 时,都没有收到消息。

有人可以提供一个清楚的示例(没有 gui 代码,没有运行时消息传递)来说明如何使用较新的 chrome.sockets.udp 正确进行多播吗?

只是不得不处理这个问题,如果您将其包含在您的清单中,您的代码应该可以工作:

"sockets": {
    "udp": {
        "send": ["*"],
        "bind": ["*"],
        "multicastMembership": [""]
    }
}

如果您已经这样做,请尝试更改您的端口/地址,以防您的网络已经在使用它们。如果仍然不起作用,请尝试删除 create() 上的选项,看看是否有任何反应。

对不起,如果我来晚了。