如何使用HTML5与UDP套接字通信?

mkk*_*wat 42 javascript sockets html5 websocket

我拥有: 运行的C++应用程序服务器,准备将数据发送到客户端,该客户端应该是HTML5页面或应用程序.

我想要的:如果c ++服务器和HTML5应用程序都是系统本地的,那么有没有办法使用udp端口与HTML5进行通信?

我知道的 :

  • 由于安全问题,JS不允许从浏览器进行UDP端口通信.
  • 在很多地方读过,答案是否定的.但答案很古老.

答案仍然是"不"吗?

有没有可行的解决方案?

任何领导都表示赞赏.

vto*_*ola 28

是的,答案仍然是'不'.Websockets是基于TCP的.请注意,WebSocket不是普通的TCP连接,而是存在HTTP协商和成帧协议.所以你也无法在Javascript中创建普通的TCP连接.

WebRTC基于UDP,它可能涵盖您的使用案例:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/

  • 是的,WebRTC需要一些工作才能工作,因为它是对等技术,你可能需要一个中间服务器来执行STUN/TURN/ICE以启动对等体之间的通信.这不是一个简单的方法,所以在进入决策之前先阅读文档:) WebRTC不是在网络中使用UDP的"方式",但它使用UDP作为传输,因此它可能符合您的要求. (4认同)

dee*_*dee 9

Chrome现在似乎有一些东西:https://developer.chrome.com/apps/sockets_udp

  • 从另一个问题来到这里 - 值得澄清的是,此API仅适用于Chrome应用/扩展程序.您无法从网页中使用它. (6认同)
  • 和 Chrome 应用程序[将停止](https://blog.chromium.org/2016/08/from-chrome-apps-to-web.html) (3认同)

小智 6

看起来 UDP for web 仍然是一个活跃的开发和潜在标准创建领域。发布此答案以记录截至 2020 年 5 月的一些新信息。

以下白皮书概述了满足“不可靠无序”协议安全需求的潜在路径:https : //gafferongames.com/post/why_cant_i_send_udp_packets_from_a_browser/

桌面 Chrome 和桌面 Firefox 的扩展正在积极开发中。 https://github.com/RedpointGames/netcode.io-browser 移动浏览器的设计方式目前无法添加此类修改(再次出于安全原因),但可以在以后添加。