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

https://docs.rs/ts-rs/latest/ts_rs/

https://github.com/snapview/tokio-tungstenite

posted on   荣锋亮  阅读(10)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用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 服务

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示