如何使用 HTML5 与 UDP 套接字通信?
How to talk to UDP sockets with HTML5?
我有:
一个 C++ 应用程序服务器 运行,准备将数据发送到应该是 HTML5 页面或应用程序的客户端。
我想要什么: 鉴于 c++ 服务器和 HTML5 应用程序都是系统本地的,有没有什么方法可以使用 udp 端口与 HTML5 进行通信?
我所知道的:
- 出于安全考虑,JS 不允许从浏览器进行 UDP 端口通信。
- 看了很多地方,答案是否定的。但是答案是旧的。
答案还是'NO'吗?
是否有任何解决方法?
感谢任何线索。
是的,答案仍然是'no'。 Websockets 是基于 TCP 的。请注意,WebSocket 不是普通的 TCP 连接,存在 HTTP 协商和框架协议。所以你也不能在 Javascript.
中创建普通的 TCP 连接
WebRTC 基于 UDP,它可能涵盖您的用例:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/
Chrome现在好像有东西:https://developer.chrome.com/apps/sockets_udp
您可以使用变通方法,设计一个 program/script/server(我会使用 PHP,作为 html 客户端)从服务器获取 UDP gram,如果您希望我能提供帮助,我做过类似的事情。
这是一个专业 issue for gamers. See that link for a discussion of websockets, webrtc, quic (in chrome), and the author's netcode.io
您也可以另外创建一个 python 本地服务器,用于桥接 C++ 应用程序和网页之间的数据。
html5 网页连接到允许网络套接字连接的本地端口(使用 Flask/tornado)。
C++ 应用程序连接到不同端口上的 UDP 侦听器。请参阅 https://wiki.python.org/moin/UdpCommunication 进行设置。
python 服务器基本上在 UDP 端口和 websocket 连接之间形成了一个透明的数据桥。
看起来 UDP for web 仍然是开发和潜在标准创建的活跃领域。发布此答案以记录截至 2020 年 5 月的一些最新信息。
以下白皮书概述了满足 "unreliable-unordered" 协议安全需求的潜在前进道路:https://gafferongames.com/post/why_cant_i_send_udp_packets_from_a_browser/
桌面 Chrome 和桌面 Firefox 的扩展正在积极开发中。
https://github.com/RedpointGames/netcode.io-browser
移动浏览器的设计方式目前阻止添加这种修改(再次出于安全原因)但可以添加。
我有: 一个 C++ 应用程序服务器 运行,准备将数据发送到应该是 HTML5 页面或应用程序的客户端。
我想要什么: 鉴于 c++ 服务器和 HTML5 应用程序都是系统本地的,有没有什么方法可以使用 udp 端口与 HTML5 进行通信?
我所知道的:
- 出于安全考虑,JS 不允许从浏览器进行 UDP 端口通信。
- 看了很多地方,答案是否定的。但是答案是旧的。
答案还是'NO'吗?
是否有任何解决方法?
感谢任何线索。
是的,答案仍然是'no'。 Websockets 是基于 TCP 的。请注意,WebSocket 不是普通的 TCP 连接,存在 HTTP 协商和框架协议。所以你也不能在 Javascript.
中创建普通的 TCP 连接WebRTC 基于 UDP,它可能涵盖您的用例:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/
Chrome现在好像有东西:https://developer.chrome.com/apps/sockets_udp
您可以使用变通方法,设计一个 program/script/server(我会使用 PHP,作为 html 客户端)从服务器获取 UDP gram,如果您希望我能提供帮助,我做过类似的事情。
这是一个专业 issue for gamers. See that link for a discussion of websockets, webrtc, quic (in chrome), and the author's netcode.io
您也可以另外创建一个 python 本地服务器,用于桥接 C++ 应用程序和网页之间的数据。
html5 网页连接到允许网络套接字连接的本地端口(使用 Flask/tornado)。
C++ 应用程序连接到不同端口上的 UDP 侦听器。请参阅 https://wiki.python.org/moin/UdpCommunication 进行设置。
python 服务器基本上在 UDP 端口和 websocket 连接之间形成了一个透明的数据桥。
看起来 UDP for web 仍然是开发和潜在标准创建的活跃领域。发布此答案以记录截至 2020 年 5 月的一些最新信息。
以下白皮书概述了满足 "unreliable-unordered" 协议安全需求的潜在前进道路:https://gafferongames.com/post/why_cant_i_send_udp_packets_from_a_browser/
桌面 Chrome 和桌面 Firefox 的扩展正在积极开发中。 https://github.com/RedpointGames/netcode.io-browser 移动浏览器的设计方式目前阻止添加这种修改(再次出于安全原因)但可以添加。