我正在开发一个 Chrome 打包应用程序,该应用程序需要通过本地网络进行多播通信,并且专门针对 Chromebook 用户。打包应用程序站点上的“网络通信”文档已过时,缺少 chrome.socket API 文档。通过查看 Chrome 的“多播”示例应用程序( https://github.com/GoogleChrome/chrome-app-samples/tree/master/multicast),我能够了解如何让多播工作。
我通过将我的应用程序加载到我的 Mac 上的 Chrome 浏览器来测试我的应用程序,一切都很好。我将它加载到我的 Chromebook 上,但多播不起作用。然后,我在我的 Mac 和 Chromebook 上尝试了“多播”示例应用程序,结果相同。“多播”示例应用程序是一个聊天应用程序。当在同一网络上的两台计算机上加载时,一切都在 Mac 上按预期工作 - 我可以发送聊天消息并接收聊天消息。在 Chromebook 上,我可以发送聊天消息但无法接收 - 包括 Chromebook 发送的消息。
根据这篇文章——Chrome Sockets API 在 Chrome OS(与 Ubuntu、Windows)上的行为不同?- Chromebook 似乎有一个阻止 UDP 数据包的受限防火墙。我按照帖子上的说明打开了开发人员模式并允许 UDP 数据包,这使我的应用程序可以按预期运行,但这对我来说不是解决方案。我不能指望 Chromebook 用户在开发者模式下运行我的应用程序。
任何人都知道是否可以在不进入开发者模式的情况下允许 Chromebook 上的 UDP 数据包?是否有未记录的权限可以添加到我的清单中以覆盖 Chromebook UDP 限制(这似乎是可能的,因为“多播”示例应用程序中包含的“udp-multicast-membership”权限未记录)?这似乎是一个很长的镜头,但可以为 chrome.socket.create 提供可选的套接字选项,这些选项似乎没有在任何地方记录。也许我可以在那里添加一些东西?为什么有 Chrome 示例应用程序不能在 Chromebook 上运行???
- -更新 - -
如果有人遇到类似问题,看起来这已经作为一个错误提交并在过去几周内进行了查看。
https://code.google.com/p/chromium/issues/detail?id=275737
我不知道它何时会真正进入 Chromebook 更新。