Kerberos认证原理 字节跳动 Eclipse 控制跳转 SQLMAP ios oop object go ssl extjs service printing colors routes ACE java 大文件上传 python运行环境 java9 java开发环境 java中new java的集合 java创建对象 linux中grep php开发实例 高效能人士的七个习惯下载 视频加字幕软件哪个好 linux解压tar maya2008 ram容量是什么意思 显示器面板类型 苹果双微信 论文修改软件 babelrc mix2s拆机 js取余数 卸载mysql php保留两位小数 3dmax材质编辑器 桌面系统
当前位置: 首页 > 学习教程  > 

rust的websocket库ws-rs 架构

2020/10/16 17:48:23 文章标签: websocket库

ws-rs的开源库地址https://github.com/housleyjk/ws-rs 架构 WebSocket需要两个基本组件:Factory和Handler。Factory是实现Factory trait的任何struct。 WS-RS已经为以Sender为第一个参数的闭包提供了Factory trait实现,因此可以将闭包作为Factory传递给…

ws-rs的开源库地址https://github.com/housleyjk/ws-rs

架构

     WebSocket需要两个基本组件:Factory和Handler。Factory是实现Factory trait的任何struct。
WS-RS已经为以Sender为第一个参数的闭包提供了Factory trait实现,因此可以将闭包作为Factory传递给任何一个调用函数。
每次成功建立基础TCP连接时,都将调用您的Factory,它将需要返回一个Handler来处理新的WebSocket连接。

       Factories可用于管理应用于多个WebSocket连接的状态,而Handlers则管理单个连接的状态。
大多数情况下,闭包Factory已经足够使用了,您只需要专注于编写您的Handler。
您的Factory将被传递一个表示WebSocket output的Sender结构的参数。Sender允许Handler使用其发送Message、或通过发送关闭代码使WebSocket关闭握手,以及其他有用的操作。
如果需要从应用程序的其他地主发送消息,可以通过clone Sender跨线程基于websocket事件循环机制使用非阻塞发送消息。


       与Factory一样,可以使用闭包用作简单的Handler。闭包必须接受仅一个Message参数,它可以捕获Factory中存在的变量。
例如,在listen and connect的入门示例中,闭包Factory返回另一个闭包作为新连接的handler。这个handler闭包捕获变量out,out是Sender,表示WebSocket的输出,这样它以后可以使用out发送消息。
闭包Handlers通常需要捕获具有所有权的变量,因为Factory可能被多次调用。将处理程序看作是在单独的线程上运行的,它们应该在Rust的内存模型中有意义。闭包处理程序必须返回Result<()>,以便在不发生panicking的情况下处理错误。

Sender的close和send方法,实际上返回一个Result<()> ,表明它们是否能够在EventLoop调度上请求command(close或send)。

       很重要的一点是,你的Handler不要轻易地产生panic,因为一个handler程序的panic将断开该WebSocket的所有其他连接。你的Handler不要轻易panic,除非你希望所有的连接都立即失败。


本文链接: http://www.dtmao.cc/news_show_300173.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?