【python】websockets
websockets官方文档
初步入门可以先看这个大致了解Python3+WebSockets实现WebSocket通信
现在越发觉得学一个东西还是得看官方文档,讲的细,很多一般博客没说明白的地方官方文档都会说明(其实基本95%的博客也都是从官方文档抄代码,阉割一部分内容给你看的,比如我这篇)
1、服务器端demo
#!/usr/bin/env python# WS server exampleimport 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()
websockets
每检测到有一个WebSocket连接都会执行一次协程hello
。当协程执行完毕,这个连接也被close关闭了。
2、客户端demo
#!/usr/bin/env python# WS client exampleimport asyncio
import websocketsasync def hello():uri = "ws://localhost:8765"async with websockets.connect(uri) as websocket:name = input("What's your name? ")await websocket.send(name)print(f"> {name}")greeting = await websocket.recv()print(f"< {greeting}")asyncio.get_event_loop().run_until_complete(hello())
其实async with在这里的用法和with open(file)挺类似的,这里使用websockets.connect
作为一个异步上下文管理器,来确保协程hello
退出时,websockets的连接也被关闭。这种写法也是官方推荐的在客户端正确关闭一个连接的写法。
3、循环send、recv数据的demo
recv数据
async def consumer_handler(websocket, path):async for message in websocket:await consumer(message)
send数据
async def producer_handler(websocket, path):while True:message = await producer()await websocket.send(message)
recv、send数据
async def handler(websocket, path):consumer_task = asyncio.ensure_future(consumer_handler(websocket, path))producer_task = asyncio.ensure_future(producer_handler(websocket, path))done, pending = await asyncio.wait([consumer_task, producer_task],return_when=asyncio.FIRST_COMPLETED,)for task in pending:task.cancel()
【python】websockets相关推荐
- 【python】图像映射:单应性变换与图像扭曲
[python]图像映射:单应性变换与图像扭曲 单应性变换(Homography) 图像扭曲(仿射变换) 图中图 分段仿射扭曲 单应性变换(Homography) 单应性变换(Homography)即 ...
- 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
[Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...
- 【python】 OSError:sift not found 问题解决
[python] OSError: XXXX.sift not found 问题解决 在python环境下通过sift描述子对图像进行特征匹配时出现错误(心累):mpire.sift not foun ...
- 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了
[Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客-CSDN博客 [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客 ...
- 【Python】将字典(dict)转化为Dataframe
[Python]将字典(dict)转化为Dataframe_张欣的博客-CSDN博客_python字典转dataframe dictory = {'a':1,'b':2} df = pd.DataFr ...
- 【Python】Numpy扩充数组函数之repeat和tile用法
2019独角兽企业重金招聘Python工程师标准>>> [Python]Numpy扩充数组函数之repeat和tile用法,有需要的朋友可以参考下. 用repeat和tile扩充数组 ...
- 11210怎么等于24_【Python】鸡兔同笼怎么“妙解”?
上一节: <<[python] 学了编程.我写的第二个游戏...>> 鸡兔同笼,是中国古代著名典型趣题之一,记载于<孙子算经>之中.鸡兔同笼问题,是小学奥数的常见题 ...
- 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题
[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...
- 【python】-- try except (异常捕获)、断言
[python]-- try except (异常捕获).断言 参考文章: (1)[python]-- try except (异常捕获).断言 (2)https://www.cnblogs.com/ ...
- keil obj 文件 结构_【Python】数据分析前的入门教程 Python For Everybody P2:数据结构...
这是密歇根大学课程Python For Everybody总结的P2部分.课程总结P1部分的地址如下: P1: 零基础程序设计(Python 入门) carolinezhq:[Python]数据分析前 ...
最新文章
- NR 5G 零基础看5G
- python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...
- 第四阶段 04_Linux基本操作
- js截屏 video_js获取视频截图
- Windows 安装Angular CLI
- 关于C#打包部署文件夹问题
- WPF 自己动手来做安装卸载程序
- 根据坐标采色修改背景
- Win10 安装 .NetFramework 4.7 (SourceTree)
- .pdf文件通过java拷贝,java复制pdf而且往pdf文件中添加内容
- chrome(谷歌浏览器)固定到任务栏,点击之后出现两个图标-原因及解决办法
- 世界十大极限运动是什么
- Spring的AOP的基于AspectJ注解开发——Spring的JDBC的模板的使用——Spring的事务管理
- 前端学习2-JavaScript
- 数据结构如何申请一个空间的队列_如何用鞋柜来作为隔断,隔出一个玄关空间...
- 获得旅行青蛙无限三叶草方法及apk
- 林业工程抗旱造林技术
- 找论文的几个实用网站
- 学日语、记单词是有规律的(转载)
- 佳能Canon LBP7700C 打印机驱动