首页 > 其他分享 >zenoh ts sdk 内部实现简单说明

zenoh ts sdk 内部实现简单说明

时间:2025-01-01 08:58:14浏览次数:1  
标签:websocket rs zenoh ts https 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

标签:websocket,rs,zenoh,ts,https,sdk
From: https://www.cnblogs.com/rongfengliang/p/18531550

相关文章

  • 打造个人听书神器:使用pyttsx3实现文字转语音
    打造个人听书神器:使用pyttsx3实现文字转语音前提声明本代码仅供学习和研究使用,不得用于商业用途。请确保在合法合规的前提下使用本代码。本代码所涉及的文本材料应遵守版权法。目录引言什么是pyttsx3?如何获取小说文本?代码实现注意事项扩展功能结语引言在这个信息爆炸......
  • 深入浅出 Server-Sent Events (SSE) 技术
    深入浅出Server-SentEvents(SSE)技术随着实时Web应用需求的增长,传统的HTTP请求响应模式已不能完全满足需求。Server-SentEvents(SSE)提供了一种简单、高效的方式,使服务器可以向客户端推送实时数据。本文将全面介绍SSE的工作原理、使用场景、与其他技术的对比,以及如......
  • PaddleTS :一个易用的深度时序建模的Python库
    GitHub-PaddlePaddle/PaddleTS:AwesomeEasy-to-UseDeepTimeSeriesModelingbasedonPaddlePaddle,includingcomprehensivefunctionalitymoduleslikeTSDataset,Analysis,Transform,Models,AutoTS,andEnsemble,etc.,supportingversatiletasksliketim......
  • RealtimeLogManager.getCurrentState
    ObjectRealtimeLogManager.getCurrentState()基础库2.19.4开始支持,低版本需做兼容处理。小程序插件:不支持功能描述实时日志会将一定时间间隔内缓存的日志聚合上报,如果该时间内缓存的内容超出限制,则会被丢弃。此方法可以获取当前缓存剩余空间。>注意:基础库内部在对日......
  • Ts编译流程
    安装建议全局安装npmi-gtypescript安装好之后,就可以直接使用tsc来编译ts文件了编译我们现在可以创建一个ts文件,并将他编译成js文件,比如下面简单的代码letstr:string="hello";但是,就是这么简单的代码,编译之后却会报错。不用担心,这个错误,并不是我们的错误,原因是默认......
  • Elasticsearch:如何在搜索时得到精确的总 hits 数
    Elasticsearch:如何在搜索时得到精确的总hits数|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|--------......
  • 解决uniapp安卓打包targetSdkVersion报错
    解决GooglePlay版本检查问题的实用方案。Error:GooglePlayrequiresthatappstargetAPIlevel33orhigher.[ExpiredTargetSdkVersion]问题描述打包时遇到以下错误:Error:GooglePlayrequiresthatappstargetAPIlevel33orhigher.[ExpiredTargetSdkVersion]......
  • MOTS-c 线粒体衍生肽
    MOTS-c(human)是一种有生物活性的肽。(高分辨率测序的最新进展导致发现了源自线粒体基因组的独特肽。目前已鉴定出8种肽:护脑素、12StRNA-c(MOTS-c)的线粒体开放阅读框和6种小肽。护脑素样肽(SHLP1-6)。所有这些肽均从线粒体释放到细胞质中,并与延长寿命和细胞活力、减......
  • 在js中importScripts方法有什么作用?
    importScripts()是WebWorkersAPI中的一个函数,它允许你在WebWorker中加载和执行外部的JavaScript文件。WebWorkers是一种能让你在浏览器中进行后台处理的技术,这样即使在进行大量计算时,也不会阻塞主线程,从而提高页面的响应性。importScripts()函数接受一个或多个URI......
  • [Wi-Fi]QCA9377CT_Security_WPA2Personal_STA_RSNCapabilitiesVerification-OptionalB
     QCA9377 FeaturesList 1x1802.11ac+Bluetooth5inasingleSoCSupportsBluetooth5,BluetoothlowenergyandisbackwardcompatiblewithBluetooth2.xSingleregulated3.3VsupplyoperationIntegratedRFFrontEnd,singleendeddesignOffloadi......