【问题标题】:How is it possible to send UDP packets to browser?如何将 UDP 数据包发送到浏览器?
【发布时间】:2021-07-07 12:16:43
【问题描述】:

我知道论坛中已经有类似的问题,但我并没有真正找到直接的答案。

我正在尝试做的事情:

我有一个发布/订阅中间件,它使用 UDP 多播向其他主机发送数据,我希望能够使用 JavaScript 即时浏览器可视化该数据。对我来说最好的情况是直接在 JavaScript 中接收 UDP 数据包(就像只是“在 JS 中重写我的订阅者代码”),但我知道出于安全原因这是不可能的。那么还有什么其他方法可以从浏览器获取这些 UDP 数据包呢?

我读到,在特定条件下,可以使用 WebRTC 通过 UDP 与浏览器通信,但我不明白这些条件是什么。如果这是您的建议,如果您能解释一下,那就太好了。我对整个实时数据传输到浏览器主题有点陌生。

提前感谢您! :)

【问题讨论】:

标签: javascript browser udp webrtc publish-subscribe


【解决方案1】:

WebRTC 提供数据通道,这允许浏览器发送/接收数据报。这些数据报将通过 UDP 传输,但也使用 SCTP 和 DTLS。

要将数据包放入浏览器,您需要编写一个 UDP -> WebRTC 网桥。这不会在浏览器中运行,但浏览器会连接到它。在编写这座桥时,您有很多选择PythonC/C++Gonode.jsRust 等等。

由于您正在编写桥接器,因此您还可以使用 Websockets 甚至 HTTP 轮询。但是今天没有办法直接让UDP进入浏览器。提出了Raw Sockets API,但 AFAIK 不会发生。

【讨论】:

  • 这就是我要找的答案,非常感谢!
【解决方案2】:

不适用于 raw-UDP,但对于 coap,有 http-coap-cross-proxies,这可能会有所帮助。

请求:

浏览器 -- HTTP -> http2coap-cross-proxy -- coap -> coap-server

回复:

浏览器

无论如何,这会保留请求/响应方案,所以我不确定这是否符合您的要求/期望。

【讨论】:

  • 请求/回复模式并不是我真正想要的,但感谢您的回答,因为我根本不知道 CoAP!我会在以后的项目中考虑到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-12
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-22
相关资源
最近更新 更多