Socket.D 协议?

Socket.D 是一个网络应用协议。在微服务、移动应用、物联网等场景,可替代 http、websocket 等。协议详情参考《官网介绍》

  • 支持: tcp, udp, ws, kcp 传输。

  • 目前:java,kotlin,javascript,node.js,python 语言环境可用。go,rust,c/c++,.net 正在开发中。

for Java 更新

  • 调整 本端会话关闭时,也触发本端的 onClose 事件
  • 优化 ws 连接控制,避免非法恶意空连
  • 优化 socketd-transport-java-kcp 服务端停止处理(添加延时,确保指令发送完成)
  • 优化 socketd-transport-java-tcp 在某些操作系统下空跑可能 cpu 过高的问题

for JavaScript/Node.js 更新

  • 调整 本端会话关闭时,也触发本端的 onClose 事件
  • 优化 ws 连接控制,避免非法恶意空连

for Python 首次发布

Helloworld 演示

  • Server
async def main():
server = await (SocketD.create_server("sd:ws")
.listen(EventListener()
.do_on_open(lambda s:
#会话打开时
log.info(s.session_id())
).do_on_message(lambda s, m:
#收到任意消息时(方便做统一的日志打印)
log.info(m.data_as_string())
).do_on("/demo", lambda s, m:
#收到"/demo"事件的消息时。如果是请求或订阅?则进行签复
(m.is_request() or m.is_subscribe()) and s.reply_end(m, StringEntity("And you too."))
)).start())
  • Client
async def main():
#打开客户端会话,并监听(用 url 形式打开)
session = await (SocketD.create_client("sd:ws://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
.open()) entity = StringEntity("Hello wrold!").meta_put("sender","noear") #发送
session.send("/demo", entity) #发送并请求(且,等待一个答复。否则超时异常)
session.send_and_request("/demo", entity).then_reply(lambda reply:
#打印
log.info(reply.data_as_string())
).then_error(lambda error:
log.error(error)
) #发送并订阅(且,接收零个或多个答复流)
session.send_and_subscribe("/demo", entity).then_reply(lambda reply:
#打印
log.info(reply.data_as_string()) or (reply.is_end() and log.info("the end!"))
)

视频演示效果:

代码仓库:

官网:

🎉 Socket.D v2.4.12 发布(新增 python 实现)的更多相关文章

  1. xmake v2.3.7 发布, 新增 tinyc 和 emscripten 工具链支持

    xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...

  2. xmake v2.2.9 发布, 新增c++20 modules的实验性支持

    这个版本没啥太大新特性,主要对c++20 modules进行了实验性支持,目前支持clang/msvc编译器,除此之外改进了不少使用体验,并且提高了一些稳定性. 另外,这个版本新增了socket.io ...

  3. XXL-JOB v2.3.0 发布 | 易用性增强

    转: XXL-JOB v2.3.0 发布 | 易用性增强 v2.3.0 Release Notes 1.[新增]调度过期策略:调度中心错过调度时间的补偿处理策略,包括:忽略.立即补偿触发一次等: 2. ...

  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布

    (新年巨献) RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本发布 历时数月,RDIFramework.NET V2.8版本发布了,感谢大家的支持. RDIFram ...

  5. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布

    历时数月,RDIFramework.NET V2.7 版本发布了,感谢大家的支持. RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,为企业或个人在.NET环境下快速开发系 ...

  6. LoadRunner 12 发布,主推云

    LoadRunner 12 发布,主推云 http://blog.csdn.net/testing_is_believing/article/details/22572341

  7. Pyocr 0.2 发布,Python 的 OCR 库 - 开源中国社区

    Pyocr 0.2 发布,Python 的 OCR 库 - 开源中国社区 Pyocr 0.2 发布,Python 的 OCR 库

  8. go-wingui 2018 全新 v2.0 版本发布,包含重大更新!

    go-wingui 2018 全新 v2.0 版本发布,包含重大更新!使用新版CEF内核Chromium 63.0.3239.109,页面可以使用最新的css3,html5技术.使用delphi7重写 ...

  9. 高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-2 发布

    HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...

  10. 高性能 Windows Socket 组件 HP-Socket v2.3.1-beta-1 发布

    HP-Socket 是一套通用的高性能 Windows Socket 组件包,包含服务端组件(IOCP 模型)和客户端组件(Event Select 模型),广泛适用于 Windows 平台的 TCP ...

随机推荐

  1. Java13版本特性【一文了解】

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  2. 基于proteus的数字电路设计

    基于proteus的数字电路设计 1.实验原理 proteus的数字电路仿真能力还是比较强大的.这里总结一下proteus的几个基本操作以备后用.大致包括74hc系列的使用.常用调试设备.仿真开关.器 ...

  3. KingbaseES 数据库中不同user的视图访问授权

    前言 本文的目的是实现u1用户访问ud用户下的视图权限. 测试 登录system用户并创建schema,user,并授权schema的有关权限给ud用户 TEST=# select current_u ...

  4. yml和properties打印SQL日志信息

    1.配置文件里面配置 第一种是properties类型如下 logging.level.com.datayes.mdi.dao.rdb.mommp.**=debug其中 com.datayes.mdi ...

  5. 7 JavaScript循环语句

    7 循环语句 在js中有三种循环语句. 首先是while循环. 它的逻辑和咱们python中的while几乎一模一样, 就是符号上有些许的区别. // 语法 while(条件){ 循环体 -> ...

  6. kube-apiserver限流机制原理

    本文分享自华为云社区<kube-apiserver限流机制原理>,作者:可以交个朋友. 背景 apiserver是kubernetes中最重要的组件,一旦遇到恶意刷接口或请求量超过承载范围 ...

  7. 我为OpenHarmony 写代码,战“码”先锋第二期正式开启!

    OpenAtom OpenHarmony(以下简称"OpenHarmony")问世以来,两年多时间汇聚了160万+社区用户,全球下载次数高达6300万,5.5万+次代码提交,吸引了 ...

  8. API 参考与帮助内容:一站式开发与使用者支援

    API 文档 API 文档是旨在了解 API 详细信息的综合指南.通常,它们包括端点.请求示例.响应类别和示例以及错误代码等信息.API 文档可帮助开发人员了解 API 端点的具体细节,并了解如何将 ...

  9. Python 数组和列表:创建、访问、添加和删除数组元素

    Python 没有内置支持数组,但可以使用 Python 列表来代替. 数组 本页将向您展示如何使用列表作为数组,但要在 Python 中使用数组,您需要导入一个库,比如 NumPy 库.数组用于在一 ...

  10. 聚焦AI新技术,HMS Core机器学习服务为移动应用智能化注入新动力

    近年来,以机器学习为代表的人工智能技术(以下简称AI技术)蓬勃发展.新算法层出不穷,开发出的图像识别.自然语言.活体检测等能力令智能化的未来生活不再遥不可及.同时,这些AI技术正持续演化和发展,数据和 ...