如何使用带有Rust的Actix Web和WebSockets发送服务器事件?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用带有Rust的Actix Web和WebSockets发送服务器事件?相关的知识,希望对你有一定的参考价值。

我在Actix Web上使用Rust,并且希望将WebSocket用于服务器事件,主要是发送到客户端的状态消息。我遵循了基本结构,

struct StatusWS 

impl Actor for StatusWS 
    type Context = ws::WebsocketContext<Self>;

    fn started(&mut self, ctx: &mut Self::Context) 
        // How to keep track of ctx???
    

当客户端连接时,started()被调用,我可以使用ctx.text()等从那里发送消息。但是,我需要跟踪上下文以便以后发送消息。我怎么做?它已作为参考传递,因此借阅检查器不会让我做太多事情。

答案

对我来说这是深水,但我认为您需要implHandlerfor StatusWS。然后,当您将Addr发送给它时,您可以使用获得的.start()作为返回值。然后,您将进入Actorhandle方法,该方法可以访问Handler,并且可以发送ws消息。

我正在亲自学习Rust和Actix,所以这可能不是您实际使用的方法。让我知道怎么回事。

以上是关于如何使用带有Rust的Actix Web和WebSockets发送服务器事件?的主要内容,如果未能解决你的问题,请参考以下文章

Rust Web 全栈开发之 Actix 尝鲜并构建REST API

rust actix_web解决跨域问题

Rust Web 全栈开发之 Web Service 中的错误处理

rust构建actix-web出现error: failed to run custom build command for `miniz-sys v0.1.11`

rust构建actix-web出现error: failed to run custom build command for `miniz-sys v0.1.11`

actix rust actor 框架学习 二 ping actor demo 代码