Javascript chrome.sockets.udp多播示例/说明

Javascript chrome.sockets.udp多播示例/说明,javascript,sockets,google-chrome,google-chrome-app,Javascript,Sockets,Google Chrome,Google Chrome App,我正在制作一个Chrome应用程序,它将有一个“聊天”功能(就像你所做的那样)。当用户加入聊天时(通过连接到端口),用户将收到在其会话期间创建的所有消息。然而,尽管我了解其中的大部分内容,但我无法理解代码中的多播部分到底是如何工作的 据我所知,应该是这样的: var socket = 0; chrome.sockets.udp.create({bufferSize: 1024 * 1024}, function (createInfo) //Create socket entry { so

我正在制作一个Chrome应用程序,它将有一个“聊天”功能(就像你所做的那样)。当用户加入聊天时(通过连接到端口),用户将收到在其会话期间创建的所有消息。然而,尽管我了解其中的大部分内容,但我无法理解代码中的多播部分到底是如何工作的

据我所知,应该是这样的:

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);
var套接字=0;
chrome.sockets.udp.create({bufferSize:1024*1024},函数(createInfo)//创建套接字条目
{
socket=createInfo.socketId;
console.log(socket);//这个有效-告诉我一个整数
var-ttl=12;
chrome.sockets.udp.setMulticastTimeToLive(套接字、ttl、函数(结果)
{
如果(结果<0)
{
console.log(“多播失败”+结果);
}
其他的
{
chrome.sockets.udp.bind(套接字,“0.0.0.0”,8080,函数(结果)//绑定到套接字
{
如果(结果<0)
{
console.log(“绑定失败”+结果);
chrome.sockets.udp.close(socket);
}
其他的
{
chrome.sockets.udp.joinGroup(套接字,“237.132.123.123”,函数(结果)//加入多播组
{
如果(结果<0)
{
log(“无法加入组!”);
chrome.sockets.udp.close(socket);
}
其他的
{
console.log(“GOT HERE”);//输出此
chrome.sockets.udp.onReceive.addListener(函数(msg)//侦听接收消息
{
console.log(msg.socketId);
})
chrome.sockets.udp.onReceiveError.addListener(函数(错误)//如果接收时出错,请执行此操作
{
console.log(error.socketId+“”+error.resultCode);
});
}
})
}
});
}
})
})
//代码后面(链接到我按下的按钮(以及当应用程序关闭时)
chrome.sockets.udp.close(socket);
问题是,尽管代码到达了.send()的回调函数(这应该意味着它发送成功),但绑定时也会出现错误,表示套接字不存在(尽管我创建了它,并且套接字编号输出了一个整数).当我用上面相同的代码创建两个应用程序并尝试让它们相互侦听/发送时,两个应用程序都没有收到消息


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

要解决这个问题,如果您在清单中包含以下内容,您的代码应该可以工作:

"sockets": {
    "udp": {
        "send": ["*"],
        "bind": ["*"],
        "multicastMembership": [""]
    }
}
如果您已经这样做了,请尝试更改端口/地址,以防您的网络已经在使用它们。如果仍然不起作用,请尝试删除create()上的选项,并查看是否发生了任何情况


抱歉,我来晚了。

没关系。我刚才做了,但忘了更新这个问题。=)