如何使用warp在多个端口上侦听

  • 本文关键字:何使用 warp rust warp
  • 更新时间 :
  • 英文 :

warp::serve(routes)
.run(([127, 0, 0, 1], 3030))
.await;

如何监听http请求和websocket连接的不同端口?

您可以启动两个独立的实例并同时运行它们:

tokio::join!(
warp::serve(routes).run(([127, 0, 0, 1], 3030)),
warp::serve(routes).run(([127, 0, 0, 1], 3031)),
);

灵感来自在不同端口运行多个activx应用程序

通常,没有理由为WebSockets使用单独的端口。

但是,如果您真的想在多个端口上侦听(这还有其他用例,例如在一个Server实例上支持明文和TLS(,则可以使用Server::run_incoming。为此,您需要创建自己的侦听器,并使用流组合子组合它们的TcpListenerStream

use std::net::Ipv4Addr;
use tokio::net::TcpListener;
use tokio_stream::{StreamExt, wrappers::TcpListenerStream};
let listener1 = TcpListener::bind((Ipv4Addr::LOCALHOST, 3030)).await?;
let listener2 = TcpListener::bind((Ipv4Addr::LOCALHOST, 3031)).await?;
let stream1 = TcpListenerStream::new(listener1);
let stream2 = TcpListenerStream::new(listener2);
let combined = stream1.merge(stream2);
warp::serve(routes).run_incoming(combined).await?;

我承认我自己没有尝试过编译这段代码,所以可能会有一些小的编译错误,但要点应该足够清楚。

相关内容

  • 没有找到相关文章

最新更新