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

时间:2015-11-30 01:21:20

标签: javascript sockets google-chrome google-chrome-app

我正在制作一款具有“聊天”功能的Chrome应用(就像this app所拥有的那样)。当用户加入聊天(通过连接到端口)时,用户将收到在他/她的会话期间创建的所有消息。但是,虽然我理解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()的回调函数(这应该意味着它已成功发送),但我在绑定时也会出现错误,说套接字不存在(虽然我创建了它并且套接字号输出一个整数)。当我使用与上面相同的代码制作两个应用程序并尝试使它们相互监听/发送时,都不会收到消息。

有人能提供一个明确的例子(没有gui代码,没有运行时消息),说明如何使用较新的chrome.sockets.udp正确组播?

1 个答案:

答案 0 :(得分:0)

只需处理此问题,如果您在清单中包含此代码,则代码应该有效:

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

如果您已经这样做,请尝试更改您的端口/地址,以防您的网络使用它们。如果仍然无效,请尝试删除create()上的选项,看看是否有任何事情发生。

对不起,如果我来不及。