websockets库使用(基于Python)
主要参考资料:
【Python】websockets库的介绍及用法: https://blog.csdn.net/qq_53871375/article/details/135920231
python模块websockets,浏览器与服务器之间的双向通信: https://blog.csdn.net/randy521520/article/details/134752051
目录
- websockets库
- 创建 WebSocket 服务器
- 创建 WebSocket 客户端
- 广播消息
- SSL/TLS 加密
websockets库
websockets库 是一个基于 asyncio 的 Python 库,旨在提供简单易用的 WebSockets 服务器和客户端功能。有如下特性:
- 简单易用:提供简洁的 API,方便快速上手。
- 基于 asyncio:利用 Python 的 asyncio 库实现异步 I/O 操作,支持高并发。
- 全双工通信:支持在单个连接上同时进行数据发送和接收。
- 支持多种协议:兼容 WebSocket 协议,支持 SSL/TLS 加密。
- 灵活扩展:支持自定义协议和中间件,方便扩展功能。
创建 WebSocket 服务器
可以使用 websockets.serve 创建一个简单的 WebSocket 服务器:
websockets.serve(): 这个函数负责创建并启动一个WebSocket服务器。
websocket.recv(): 这个函数是一个协程函数,用于从WebSocket接收消息。
websocket.send(): 这个函数是一个协程函数,用于向WebSocket发送消息。
import asyncio
import websocketsasync def hello(websocket, path):name = await websocket.recv()print(f"< {name}")greeting = f"Hello {name}!"await websocket.send(greeting)print(f"> {greeting}")start_server = websockets.serve(hello, "localhost", 8765)asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
创建 WebSocket 客户端
可以使用 websockets.connect 创建一个简单的 WebSocket 客户端:
websockets.connect(): 这个函数负责创建一个 WebSocket 客户端。
websocket.close(): 关闭 WebSocket 连接。
websockets.exceptions: 提供了WebSocket特定的异常。如:ConnectionClosed、InvalidHandshake、InvalidOrigin等。
import asyncio
import websocketsasync def hello():uri = "ws://localhost:8765"async with websockets.connect(uri) as websocket:await websocket.send("Hello, World!")response = await websocket.recv()print(f"< {response}")asyncio.get_event_loop().run_until_complete(hello())
广播消息
可以实现消息广播功能,将消息发送给所有连接的客户端:
import asyncio
import websocketsconnected_clients = set()async def handler(websocket, path):connected_clients.add(websocket)try:async for message in websocket:await asyncio.wait([client.send(message) for client in connected_clients])finally:connected_clients.remove(websocket)start_server = websockets.serve(handler, "localhost", 8765)asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
SSL/TLS 加密
可以为 WebSocket 服务器添加 SSL/TLS 加密,确保数据传输安全:
import asyncio
import ssl
import websocketsssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(certfile="path/to/certfile", keyfile="path/to/keyfile")async def echo(websocket, path):async for message in websocket:await websocket.send(message)start_server = websockets.serve(echo, "localhost", 8765, ssl=ssl_context)asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
相关文章:
websockets库使用(基于Python)
主要参考资料: 【Python】websockets库的介绍及用法: https://blog.csdn.net/qq_53871375/article/details/135920231 python模块websockets,浏览器与服务器之间的双向通信: https://blog.csdn.net/randy521520/article/details/134752051 目录 websocke…...
Electron 主进程与渲染进程、预加载preload.js
在 Electron 中,主要控制两类进程: 主进程 、 渲染进程 。 Electron 应⽤的结构如下图: 如果需要更深入的了解electron进程,可以访问官网 流程模型 文档。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用…...
鸿蒙harmonyos next纯flutter开发环境搭建
公司app是用纯flutter开发的,目前支持android和iOS,后续估计也会支持鸿蒙harmonyos。目前谷歌flutter并没有支持咱们国产手机操作系统鸿蒙harmonyos,于是乎国内有个叫OpenHarmony-SIG的组织,去做了鸿蒙harmonyos适配flutter开发的…...
【学习资源】人在环路的机器学习
说明:本文图片和内容来源 Human-in-the-Loop Machine Learning Human-in-the-Loop Machine Learning Active learning and annotation for human-centered AI by Robert (Munro) Monarch, June 2021 介绍Human-in-the-Loop的目标,学习过程,…...
计算机毕业设计 基于Python的热门微博数据可视化分析系统的设计与实现 Python+Django+Vue 可视化大屏 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
031集——文本文件按空格分行——C#学习笔记
如下图,读取每行文本,每行文本再按空格分开读取一个字符串,输出到另一个文本: CAD环境下,代码如下: using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Runtime; using System; using Sys…...
LabVIEW 成绩统计系统
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
SpringBoot技术栈:构建高效古典舞交流平台
第二章 相关技术介绍 2.1Java技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译…...
Docker 容器日志记录与管理:日志输出、轮转与配置实践
Docker 容器化应用的日志管理是运维中的重要环节。容器默认会将标准输出(stdout)和标准错误(stderr)记录到日志文件中,但这些日志文件如果不加管理,可能会无限制地增长,最终导致磁盘空间耗尽。因此,了解如何规范化容器日志管理、配置日志轮转策略以及合理存储位置至关重…...
Django学习笔记一:MVT的示例
Django的MVT(Model-View-Template)架构是一种将应用程序的不同部分分离的方法,旨在提高代码的可维护性和可扩展性。MVT将应用分解为三个主要部分:Model(模型)、View(视图)和Template…...
集合框架01:集合的概念、Collection体系、Collection接口
1.集合的概念 集合是对象的容器,定义了多个对象进行操作的常用方法。可实现数组的功能。 集合和数组的区别: 1.数组长度固定,集合长度不固定; 2.数组可以存储基本类型和引用类型,集合只能存储引用类型; …...
shadcn-vue 快速开始
介绍 基于 Radix Vue 和 Tailwind CSS 构建的可重复使用的组件 一个由社区主导的非官方 Vue 版本的 shadcn/ui。虽然我们与 shadcn 没有正式的合作或联系,但在开始这个项目之前得到了作者本人的同意。创建这个项目的原因是 Vue 生态系统中缺乏类似的项目ÿ…...
智慧管控平台技术解决方案
1. 智慧管控平台概述 智慧管控平台采用先进的AI技术,围绕一个中心和四大应用构建,旨在打造一个智能、共享、高效的智慧运营管理环境,实现绿色节能和业务创新。 2. 平台架构设计 系统整体架构设计包括统一门户管理、IOT平台、大数据、视频云…...
酒店业CRM和酒店数据管理大数据—未来之窗行业应用跨平台架构
一酒店架构图 二、客户数据 三、客户数据源...
滚雪球学Oracle[8.1讲]:高级主题与未来趋势
全文目录: 前言0. 上期回顾1. Oracle数据库中的大数据与分析1.1 Oracle与大数据平台的集成1.2 Oracle Advanced Analytics的使用1.3 Hadoop与Oracle的混合架构设计 2. 机器学习与Oracle数据库2.1 使用Oracle Machine Learning进行预测分析2.2 数据库内置机器学习模型…...
【Matlab绘图】从Excel导入表格并进行三维绘图
前言 今天手头上拿到一份论文的xlsx数据,要求使用MATLAB绘制进行三维图标坐标绘制。那么我们来看看如何使用如下数据进行绘图。 如上数据所示,数据是一个30行25列的数据,数据的内容是论文某项模型模拟的结果,我们希望把横坐标x取…...
IDEA里面的长截图插件
1.我的悲惨经历 兄弟们啊,我太惨了,我刚刚在准备这个继承和多态的学习,写博客的时候想要截图代码,因为这个代码比较大,一张图截取不下来,所以需要长截图,之前使用的qq截图突然间拉胯࿰…...
(15)衰落信道模型作用于信号是相乘还是卷积
文章目录 在使用衰落信道进行通信系统仿真时,有的资料中是用相乘的方法,有的资料中用的是卷积的方法。那么,衰落信道模型作用于传输信号时,是该用相乘还是卷积呢?下面针对该问题给出回答。 在仿真瑞利衰落信道对传输信…...
(C语言贪吃蛇)14.用绝对值方式解决不合理的走位
目录 前言 解决方式 运行效果 总结 前言 我们上节实现了贪吃蛇四方向走位,但是出现了一些不合理的走位,比如说身体节点和头节点重合等等,本节我们便来解决这个问题。 我们希望贪吃蛇撞到自身时游戏会重新开始,并且贪吃蛇的运动方…...
[深度学习]基于YOLO高质量项目源码+模型+GUI界面汇总
以下项目全部是本人亲自编写代码,项目汇总如下: 序号项目名称下载地址1基于yolov8的辣椒缺陷检测系统python源码onnx模型评估指标曲线精美GUI界面.zip点我下载2基于yolov8的海上红外目标系统python源码onnx模型评估指标曲线精美GUI界面.zip点我下载3基于…...
百度网盘提取码智能获取工具:提升资源获取效率的技术方案
百度网盘提取码智能获取工具:提升资源获取效率的技术方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 在数字资源爆炸的今天,百度网盘作为主流文件分享平台,已成为学习资料、工作文件和媒…...
Qwen3.5-9B部署教程:GPU内存映射优化+O_DIRECT加速模型加载
Qwen3.5-9B部署教程:GPU内存映射优化O_DIRECT加速模型加载 1. 项目概述 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,具备强大的逻辑推理、代码生成和多轮对话能力。该模型支持多模态理解(图文输入)和长上下文处理࿰…...
Wan2.2-I2V-A14B效果展示:动态运镜+光影变化的高质量视频样例
Wan2.2-I2V-A14B效果展示:动态运镜光影变化的高质量视频样例 1. 惊艳的视频生成能力 Wan2.2-I2V-A14B文生视频模型带来了令人惊叹的视频生成效果。这个私有部署镜像经过深度优化,能够根据文字描述生成具有专业级动态运镜和光影变化的高质量视频。想象一…...
Tomcat安全防护指南:如何用TomcatScanPro检测CVE-2017-12615和AJP文件包含漏洞
Tomcat安全防护实战:从漏洞检测到加固的全链路解决方案 在企业级Java应用部署中,Tomcat作为最流行的Web服务器之一,其安全性直接关系到业务系统的稳定运行。本文将深入剖析两个高危漏洞(CVE-2017-12615和AJP文件包含)的…...
vLLM-v0.11.0保姆级部署教程:5分钟搞定LLaMA/Qwen高速推理服务
vLLM-v0.11.0保姆级部署教程:5分钟搞定LLaMA/Qwen高速推理服务 你是不是也遇到过这样的烦恼?好不容易搞到一个不错的开源大模型,比如LLaMA或者Qwen,想部署成服务试试效果,结果发现速度慢得像蜗牛,内存占用…...
C/C++调试神器:5分钟搞定backtrace打印调用栈(附完整代码)
C/C调试实战:5分钟集成智能调用栈追踪工具 当你的C/C程序在深夜突然崩溃,控制台只留下一行"Segmentation fault"时,那种绝望感每个开发者都体会过。传统的调试方式往往需要反复加日志、断点跟踪,效率低下。本文将带你用…...
光伏电站电流传感器选型与应用全解析
摘要:本文深入探讨光伏电站中电流传感器的选型要点与应用技术。阐述了电流传感器在光伏系统中的重要性,分析其不同技术原理及特点,并结合光伏电站实际工况,从量程、精度、隔离耐压等方面详细介绍选型方法,同时分享了电…...
PyTorch 2.8多场景实操:科研训练+工程推理+内容创作的统一技术底座
PyTorch 2.8多场景实操:科研训练工程推理内容创作的统一技术底座 1. 为什么选择PyTorch 2.8作为统一技术底座 PyTorch 2.8作为当前最主流的深度学习框架之一,已经成为学术界和工业界的首选工具。这个基于RTX 4090D 24GB显卡深度优化的镜像,…...
用Python手搓一个简易飞行仿真器:从状态机到轨迹计算的保姆级教程
用Python手搓一个简易飞行仿真器:从状态机到轨迹计算的保姆级教程 飞行仿真技术听起来像是航空航天工程师的专属领域,但你知道吗?用Python和一些基础库,我们完全可以构建一个简化版的飞行仿真系统。本文将带你从零开始࿰…...
Ostrakon-VL C++高性能集成:工业级视觉系统的核心引擎
Ostrakon-VL C高性能集成:工业级视觉系统的核心引擎 1. 工业视觉的极致性能挑战 在高速运转的汽车零部件生产线上,每分钟需要完成200次精密零件的外观检测。传统视觉方案常面临两个致命问题:要么漏检率超标导致质量风险,要么检测…...
