websocket 如何使用HTML5与UDP套接字对话?

a0x5cqrl  于 2023-01-02  发布在  HTML5
关注(0)|答案(7)|浏览(297)

**我有什么:**一个C应用程序服务器运行,准备发送数据到客户端,这是一个HTML5页面或应用程序。
**我想要的:**有没有办法使用udp端口与HTML5通信,因为c
服务器和HTML5应用程序都是系统本地的?
我所知道的

  • 出于安全考虑,JS不允许来自浏览器的UDP端口通信。
  • 我在很多地方读到过,答案是否定的。但答案都是旧的。

答案还是“不”吗?
是否有可能的变通方案?
任何线索都很感谢。

sgtfey8w

sgtfey8w1#

是,答案仍然是“否”。WebSocket是基于TCP的。请注意,WebSocket不是普通TCP连接,有HTTP协商和帧协议。因此,您也不能在Javascript中创建普通TCP连接。
WebRTC基于UDP,它可能涵盖您的用例:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/

holgip5t

holgip5t3#

看起来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移动的浏览器的设计方式阻止了目前添加这种修改(再次出于良好的安全原因),但可以在未来添加。

goqiplq2

goqiplq24#

这是一个主要的issue for gamers,请查看该链接,了解有关websockets、webrtc、quic(chrome)和作者的netcode.io的讨论

ctzwtxfj

ctzwtxfj5#

你也可以创建一个额外的python本地服务器来桥接你的C应用程序和网页之间的数据。
html5网页连接到允许Web Socket连接的本地端口(使用Flask/tornado)。
C
应用程序连接到不同端口上的UDP侦听器。请参见https://wiki.python.org/moin/UdpCommunication进行设置。
python服务器基本上在UDP端口到WebSocket连接之间形成了一个透明的数据桥。

dy2hfwbg

dy2hfwbg6#

阅读完所有的链接和评论,我们可以得出结论:

否,您无法从浏览器发送UPD包

你可能不会,因为添加这样的功能将是网络安全的一个巨大倒退。

bn31dyow

bn31dyow7#

你可能会使用一个变通办法,设计一个程序/脚本/服务器(我会使用PHP,作为一个html客户端),以获得UDP的克从服务器,如果你想我可以帮助,我已经在类似的东西。

相关问题