如何使用HTML5与UDP套接字通信
How to talk to UDP sockets with HTML5?
我所拥有的:一个正在运行的C++应用程序服务器,准备向客户端发送数据,该客户端应该是HTML5页面或应用程序。
我想要的:考虑到c++服务器和HTML5应用程序都是系统本地的,有没有任何方法可以使用udp端口与HTML5进行通信?
我所知道的:
- 出于安全考虑,JS不允许从浏览器进行UDP端口通信
- 我读过很多地方的书,答案是否定的。但是答案是陈旧的
答案仍然是否定的吗?
有什么可行的办法吗?
任何线索都将不胜感激。
是的,答案仍然是"否"。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
看起来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移动浏览器的设计方式目前阻止了这种修改的添加(再次出于良好的安全原因),但以后可能会添加。
这是游戏玩家的一个主要问题。有关websocket、webrtc、quic(在chrome中)和作者的netcode.io 的讨论,请参阅该链接
您也可以创建一个额外的python本地服务器,用于桥接C++应用程序和网页之间的数据。
html5网页连接到一个本地端口,该端口允许网络套接字连接(使用Flask/toronto)。
C++应用程序连接到其他端口上的UDP侦听器。请参阅https://wiki.python.org/moin/UdpCommunication设置。
python服务器基本上形成了UDP端口到websocket连接之间的透明数据桥。
阅读所有链接和评论后,我们可以得出结论:
不,您不能从浏览器发送更新包。
你可能不会,因为添加这样的功能将是网络安全的一次巨大倒退。
您可以使用变通方法,设计一个程序/脚本/服务器(我会使用PHP,作为一个html客户端)来从服务器获取UDP gram,如果您希望我能提供帮助,我也做过类似的工作。
- 如何使用HTML5与UDP套接字通信
- 在node.js中写入ECONNRESET错误和套接字连接检查
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 套接字服务器向客户端广播,但不从两者接收
- 如何确定套接字中的变量是否匹配
- 如何通过网络套接字连接到树莓派上的Mosquitto经纪人
- 在 HTML5 和 C# Web 套接字通信之间
- 是否可以与位于不同于html5网站呈现的服务器的网络套接字进行通信
- 无法与网络套接字通信.高速公路:收到 HELLO 消息,会话尚未建立
- Javascript到Java通过套接字编程进行通信
- 安卓应用和网络浏览器之间的套接字通信
- 客户端Java服务器与Javascript之间的套接字通信
- 如何使用javascript/html5中的web套接字与python通信
- C#Tcp服务器-HTML5网络套接字通信
- Java和JavaScript套接字通信
- 使HTML页面与C中的套接字通信
- 使用网络套接字的低延迟通信&Java服务器
- 套接字.IO客户端无法与服务器通信
- 我可以创建一个java服务器,既与java套接字与web套接字通信
- Nodejs, express &套接字.两个静态客户端页面之间的IO通信