【发布时间】:2013-09-26 19:01:01
【问题描述】:
我正在开发一个 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 Behaves Differently on Chrome OS (vs. 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 更新。
【问题讨论】:
-
我引用的“网络通信”文档:developer.chrome.com/apps/app_network.html chrome.socket API 文档:developer.chrome.com/apps/socket.html
标签: udp google-chrome-app google-chrome-os