zenoh ts sdk 内部实现简单说明
以前简单说过zenoh 内部是直接支持websocket 协议的,但是如果需要使用websocket就需要自己包装特定的消息体才能通信
为了方便web使用(同时也支持node)zenoh ts sdk 基于remote plugin (同样也是暴露websocket api),之后包装为标准zenoh
api 模式访问
内部处理
此插件的处理比较有意思,因为尽管暴露了websocket api 但是还是需要不少类型定义的,这样才能确保与现有zenoh sdk的处理时候一致的,zenoh 开发上基于了ts-rs 这个rust crate 快速生成类型定义,内部websocket 的实现是基于了tokio-tungstenite 一个面向stream 的websocket 处理,对于client ts 客户端基于了websocket 通道,但是实际协议消息处理使用了channel-ts 这个库进行数据处理,remote plugin 内部包含了控制协议以及数据协议的处理,控制类的主要是对于发布,订阅,查询,删除,获取等的处理,依赖一个StateMap进行状态处理,数据处理主要是对于控制创建的服务进行数据的处理(比如订阅,发布,查询),目前zenoh数据基于base64 传输,通信上通过json
说明
对于ts sdk 内部的实现尽管是客户端发起的,但是实际上client 只是调用remote plugin 包装的能力,具体还都是插件处理的,以上只是一个简单说明,后边会结合运行,完整介绍下内部机制,不少设计上很值得学习
参考资料
zenoh-plugin-remote-api/src/interface.rs
https://github.com/eclipse-zenoh/zenoh-ts
https://github.com/Aleph-Alpha/ts-rs
https://github.com/arjsin/channels
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2024-01-01 oban elixir 强大的任务处理框架
2023-01-01 nginx-clojure nginx clojure & java & groovy 模块
2023-01-01 haproxy 2.7 发布
2023-01-01 sccache 基于rust 类似ccache 的编译cache 工具
2023-01-01 osv-scanner google 开源漏洞扫描工具
2023-01-01 roapi 基于datafusion+ apache arrow 的多协议api 平台
2022-01-01 基于squid 暴露k8s 服务