asynchronous - 使用 rust-websocket 时如何处理错误,以便只有该连接失败而不是整个程序?

标签 asynchronous error-handling websocket rust

我正在尝试启动并运行 Rust WebSocket 服务器。我从 example code for an async websocker server 开始.

每次我得到一个Io错误,比如连接中断,整个程序结束,没有任何错误。我将示例第 26 行的代码修改为:

.map_err(|InvalidConnection {error, ..}| {
    println!("Error:{:?}",error);
    return error;
})

这会打印错误,但不会阻止程序仅停止单个连接而不会自行崩溃。

我遇到的最常见错误是:

Io(Error { repr: Custom(Custom { kind: Other, error: Stream(Error { repr: Custom(Custom { kind: ConnectionAborted, error: StringError("unexpected EOF observed") }) }) }) })

最佳答案

好的,在 rust IRC channel 的帮助下,我找到了解决方案。我刚刚将错误替换为 None 并将其过滤掉。

.map(Some).or_else(|_| -> Result<_, ()> { Ok(None) }).filter_map(|x| x) 

也许此信息可以帮助遇到类似问题的人。

关于asynchronous - 使用 rust-websocket 时如何处理错误,以便只有该连接失败而不是整个程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44974034/

相关文章:

使用执行器服务的Java异步方法调用

javascript - NodeJS/Javascript - 使用 Promise 处理图像收集然后保存聚合结果

php - 如何将自定义变量放入PHP错误日志

python-3.x - 无法让 SSL 用于安全 Websocket 连接

javascript - 为什么我在 Jasmine 1.3.x 中的 AngularJS 异步测试不起作用?

javascript - 如何在等待多个异步 JSONP 回调时显示加载消息?

ruby-on-rails-3 - 如何添加Devise错误消息 “someone already signed up with that email”

error-handling - 示例——即使是初学者示例——是否应该包含错误处理代码?

go - 使用 golang 和 gorilla websocket 库,为什么 WriteJson 会返回错误?

c# - 是否可以将 UDP 与 Web 套接字一起使用而不是 TCP