如何向浏览器发送 UDP 数据包?
How is it possible to send UDP packets to browser?
我知道论坛中已经有类似的问题,但我并没有在那里找到我的问题的直接答案。
我想做什么:
我有一个 pub/sub 中间件,它使用 UDP 多播向其他主机发送数据,我希望能够使用 JavaScript im 浏览器可视化该数据。对我来说最好的情况是直接在 JavaScript 中接收 UDP 数据包(就像“用 JS 重写我的订阅者代码”),但我知道出于安全原因这是不可能的。那么还有什么其他方法可以从浏览器以某种方式获取这些 UDP 数据包呢?
我了解到,在特定条件下,可以使用 WebRTC 通过 UDP 与浏览器通信,但我不明白这些条件是什么。如果这是您的建议,您能解释一下就太好了。我对整个实时数据传输到浏览器主题有点陌生。
提前致谢! :)
WebRTC 提供数据通道,这允许浏览器send/receieve 数据报。这些数据报将通过 UDP 承载,但也会使用 SCTP 和 DTLS。
为了让你的数据包进入浏览器,你需要编写一个 UDP -> WebRTC 桥。这不会在浏览器中 运行,但浏览器会连接到它。编写此桥 Python, C/C++, Go, node.js, Rust 等时,您有很多选择。
由于您正在编写桥接器,因此您还可以使用 Websockets 甚至 HTTP 轮询。但是今天没有办法直接让UDP进入浏览器。提出了 Raw Sockets API,但 AFAIK 不会发生。
不适用于原始 UDP,但对于 coap(s),有 http-coap-cross-proxies,这可能会有所帮助。
请求输出:
浏览器 -- HTTP -> http2coap-cross-proxy -- coap -> coap-server
回复:
浏览器 <- HTTP -- http2coap-cross-proxy <- coap -- coap-server
无论如何,这保留了 request/response 方案,所以我不确定它是否与您的 requirements/expectations 匹配。
我知道论坛中已经有类似的问题,但我并没有在那里找到我的问题的直接答案。
我想做什么:
我有一个 pub/sub 中间件,它使用 UDP 多播向其他主机发送数据,我希望能够使用 JavaScript im 浏览器可视化该数据。对我来说最好的情况是直接在 JavaScript 中接收 UDP 数据包(就像“用 JS 重写我的订阅者代码”),但我知道出于安全原因这是不可能的。那么还有什么其他方法可以从浏览器以某种方式获取这些 UDP 数据包呢?
我了解到,在特定条件下,可以使用 WebRTC 通过 UDP 与浏览器通信,但我不明白这些条件是什么。如果这是您的建议,您能解释一下就太好了。我对整个实时数据传输到浏览器主题有点陌生。
提前致谢! :)
WebRTC 提供数据通道,这允许浏览器send/receieve 数据报。这些数据报将通过 UDP 承载,但也会使用 SCTP 和 DTLS。
为了让你的数据包进入浏览器,你需要编写一个 UDP -> WebRTC 桥。这不会在浏览器中 运行,但浏览器会连接到它。编写此桥 Python, C/C++, Go, node.js, Rust 等时,您有很多选择。
由于您正在编写桥接器,因此您还可以使用 Websockets 甚至 HTTP 轮询。但是今天没有办法直接让UDP进入浏览器。提出了 Raw Sockets API,但 AFAIK 不会发生。
不适用于原始 UDP,但对于 coap(s),有 http-coap-cross-proxies,这可能会有所帮助。
请求输出:
浏览器 -- HTTP -> http2coap-cross-proxy -- coap -> coap-server
回复:
浏览器 <- HTTP -- http2coap-cross-proxy <- coap -- coap-server
无论如何,这保留了 request/response 方案,所以我不确定它是否与您的 requirements/expectations 匹配。