首页 > 编程语言 > Socket.D v2.4.12 发布(新增 python 实现)

Socket.D v2.4.12 发布(新增 python 实现)

时间:2024-04-25 21:13:59浏览次数:17  
标签:12 log python socketd session ws reply lambda Socket

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!"))
    )

视频演示效果:

代码仓库:

官网:

标签:12,log,python,socketd,session,ws,reply,lambda,Socket
From: https://www.cnblogs.com/noear/p/18158587

相关文章

  • blender python api 使用脚本进行动画渲染
    1.摄像机“Camera”在一个名叫“渲染”的集合中2.代码:importbpy#设置输出路径和文件名output_path="/path/to/output/"#替换为你的输出路径filename="rendered_animation"#输出文件的前缀#获取名为“渲染”的集合render_collection_name="渲染"render_c......
  • 【python】pyqt中使用多线程处理耗时任务
    在PyQt中使用多线程通常是为了避免界面冻结,特别是在执行耗时的任务时。PyQt本身是基于Qt的,而Qt不允许在除主线程之外的线程中直接操作GUI元素。因此,任何涉及GUI更新的操作都应该在主线程中执行。importsysimportthreadingfromPyQt5.QtWidgetsimportQApplic......
  • Python 字符串格式化指南
    前言在Python中,字符串格式化是一种常见且重要的操作,用于将变量或值插入到字符串中,并控制输出的格式。本文将介绍几种常见的字符串格式化方法,帮助大家掌握在Python中有效地处理字符串的技巧。方法一:使用%操作符格式化字符串使用%操作符是一种传统的字符串格式化方法,可......
  • Python GUI开发- Qt Designer环境搭建
    前言QtDesigner是PyQt5程序UI界面的实现工具,使用QtDesigner可以拖拽、点击完成GUI界面设计,并且设计完成的.ui程序可以转换成.py文件供python程序调用环境准备使用pip安装pipinstallpyqt5-toolsQtDesigner环境搭建在pip安装包的路径中,找到designer.exe文件......
  • Python3.8.4 解决 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently
    系统版本:CentOSLinuxrelease7.6.1810(Core)编译安装Python3.8.4[root@hankyoon~]#tar-xvfPython-3.8.4.tgz[root@hankyoon~]#cdPython-3.8.4/[root@hankyoon~]#./configure--prefix=/usr/local/python3.8[root@hankyoon~]#make&&makeinstall[......
  • G120变频器
    \ ......
  • 实践探讨Python如何进行异常处理与日志记录
    本文分享自华为云社区《Python异常处理与日志记录构建稳健可靠的应用》,作者:柠檬味拥抱。异常处理和日志记录是编写可靠且易于维护的软件应用程序中至关重要的组成部分。Python提供了强大的异常处理机制和灵活的日志记录功能,使开发人员能够更轻松地管理代码中的错误和跟踪应用程序......
  • python读取yaml配置文件的方法
    yaml简介1.yaml[ˈjæməl]:YetAnotherMarkupLanguage:另一种标记语言。yaml是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式2.yaml基本语法规则:大小写敏感使用缩进表示层级关系缩进时不允许使用Ta......
  • Python 彩色字体输出
    使用ANSI转译码给print添加颜色公式'\033[显示方式;字体颜色;背景色m输出内容\033[0m'公式参数解析\033:ANSI转义序列开始标识[:控制码用于控制字体方式、颜色、背景色(控制码对应参数值是唯一的所以仅设置一个参数时其他参数可以省略不用空占用)m:控制码结束标......
  • Python的Spacy
    spaCy是一个基于Python编写的开源自然语言处理库。基于自然处理领域的最新研究,spaCy提供了一系列高效且易用的工具,用于文本预处理、文本解析、命名实体识别、词性标注、句法分析和文本分类等任务。安装pipinstallspacy查看版本importspacyprint(spacy.__version__)......