socketioxide的axum集成
启动socketio依靠examle里的layer
使用可变State依靠axum里的example
使用了,Arc,这个synce机制,有加锁的办法.
提取client,IP
为了了解每个客户的在线状态,需要提取其IP.作为一个身份标识.
一类是tcp,socket对方地址
在建立服务时获得引用,依靠HTTPExtension,这是原始tcp套接字的获取,不适应docket容器,非HOST模式,和反向代理的复杂情况...
一类是SocketRef里socket.re_ref.
在代理模式下
在handle里的缺省参数,socketRef的函数req_ref(),提取到请求信息其中的request.headers,会有反向代理补充的x-forward-ip,可以在调试后确定下来.
axum的get,or,post请求处理中使用socketRef
在连接建立时,把socketRef.clone()存入,共享State.然后在get,orpost的axum route handle获取并使用.
主要用于通过url发送广播消息, 不同服务器间的消息传递.
flask--> rust,socketio->socketio client.
因为要完成flask的socketio的解耦.目前只想到了这个办法.