是否可以将rust-websocket与iron一起使用,或者将两者一起使用没有意义?
如果有可能,我该如何实现呢?
答案 0 :(得分:0)
听起来你想要将Iron内部的Hyper换成rust-websocket。如果甚至可能的话,这可能很难。 Iron与Hyper大量集成,整个设计围绕HTTP(S)工作。如果它真的是你想要做的事情,可能值得与Iron开发人员联系,看看允许通信接口是否可以交换的可能性,但我不知道他们接受的可能性有多大。这个想法。
答案 1 :(得分:0)
我正在考虑在单个项目中同时使用Iron和rust-websocket,而我所采用的架构包括让websocket在一个单独的端口上进行侦听。我可以在使用Nginx进行部署时将其屏蔽,然后代理返回特定端口
答案 2 :(得分:0)
由于您的目标是创建一个高性能的websocket服务器,所以从Iron之类的HTTP服务器开始可能没有任何意义。 (Iron基于Hyper,它自称为“快速且正确的HTTP实现”)。我建议您看看tokio,它被设计为“异步,事件驱动的平台”,并由Hyper和Iron使用。
WebSockets需要不同的协议来创建双向交互式通信会话。来自Mozilla docs:
您可以将消息发送到服务器并接收事件驱动的响应,而不必轮询服务器以获取答复。
因此,如果不需要HTTP,那么从专注于请求/响应的服务器开始可能会带来更多的复杂性,而不是带来好处。 iron websocket issue仍处于打开状态时,recent comment指出:
我个人认为将Websocket适应Iron的请求-中间件-响应模型非常困难。为此,我还没有看到其他语言的优雅抽象。
如果您真的想探索将WebSockets与Iron一起使用,则需要扩展hyper以支持WebSockets(good discussion here),然后访问较低级别的超级连接(在iron issue #478中进行了说明)。建立连接后,WebSocket库将很有用(尽管rust-websocket似乎已不再维护)。