gpt4 book ai didi

https - 有没有办法在与 hyper 相同的端口上运行 Tungstenite?

转载 作者:行者123 更新时间:2023-11-29 08:07:30 33 4
gpt4 key购买 nike

我正在尝试用 Rust 为一个简单的浏览器游戏制作一个网络服务器。我希望服务器能够通过 HTTPS 传递页面,但也能够通过 WebSockets 进行通信。我打算将此服务器放在 Heroku 上,但由于每个应用程序只允许一个端口,我必须让 WebSocket 服务器在与其他 HTTPS 代码相同的端口上运行。

好像this is possible with crates like rust-websocket ,但是那个 crate 使用了一个过时的 hyper 版本并且似乎不再被维护。 crate tokio_tungstenite 是最新的。

问题是 hypertungstenite 都有自己的 HTTP 协议(protocol)实现,WebSockets 操作的 HTTP 协议(protocol)无法在两者之间进行转换。这意味着一旦 HTTPS 请求被 hypertungstenite 解析后,其他部分就无法继续处理,因此您不能真正尝试连接 WebSocket 并匹配 tungstenite 中的错误并通过 hyper 处理它,也不能通过 hyper 解析请求并检查它是否是WebSocket 请求并将其发送到 tungstenite。有什么办法可以解决这个问题吗?

最佳答案

我认为应该可以做到这一点,tungstenitetokio-tungstenite 允许您指定自定义 header (有辅助函数,前缀为 hdr),因此根据您使用的 hyper 版本,如果您可以将请求转换为某种形式,当可以提取 header 时,您可以将它们传递给 钨矿.

您可能还想尝试 warp crate,它建立在 hyper 之上,并且在底层使用 tungstenite 来支持 websocket , 所以如果你想写你自己的 warp 版本,你可以看看源代码(源代码可能包含关于如何使用 hypertungstenite 在一起)。

关于https - 有没有办法在与 hyper 相同的端口上运行 Tungstenite?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50975825/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com