首页 > 编程语言 >python的websockets库

python的websockets库

时间:2023-11-30 16:14:24浏览次数:49  
标签:python await ws import 监听 websockets 客户端

安装 pip install websockets

分为客户端和服务端两部分 

 

服务端一般与异步的库一起用 因为客户端不可能只服务一个客户 所以要用异步处理多个客户 

以asyncio示例 

from websockets.server import serve
import websockets
import asyncio

async def start(ws,path): # 第一个参数是websocket对象 第二个基本用不到 可以不写 后面回调这个函数的时候 参数会自动传 
    clickMsg = await ws.recv() # 接收客户端的消息 几个常用的方法 send() 发送数据 close() 关闭连接 await的作用是挂起当前任务 等待后面的代码执行完成 这之间软件回去执行其他异步任务 
    print(clickMsg)
    await ws.send('ok')
    await ws.close()

async def wsmain(): # websocket主函数 
    async with serve(start,'0.0.0.0',12333): # 解释 with serve 开启监听 第一个参数是连接后要执行的函数 第二个是监听的地址 0.0.0.0 表示所有地址 也可以写本机公网ip 第三个参数是坚挺的端口 
        while 1: # 解释 后面要执行这个函数 如果不加这个 执行完监听就完了 加这个死循环是要一直监听 不让服务关闭 
            asyncio.sleep(1)
    
asyncio.run(wsmain()) # 运行 

客户端

from websockets.sync.client import connect

def hi():
    with connect('ws://localhost:12333') as ws:
        ws.send('connect')
        serverMessage = ws.recv()
        print(serverMessage)

hi()

 

 

有时候我们想要客户端断开连接运行一些代码 怎么写呢 或者说监听连接人数 有一个断开的就减一 

可以在服务端监听连接的地方 也就是with serve的地方 加一个try 然后捕获相应的错误 

标签:python,await,ws,import,监听,websockets,客户端
From: https://www.cnblogs.com/mltooo/p/17867610.html

相关文章

  • Rust std fs 比 Python 慢!真的吗!?
    作者:XuanwoDatabendLabs成员,数据库研发工程师https://github.com/xuanwo我即将分享一个冗长的故事,从OpenDAL的op.read()开始,以一个意想不到的转折结束。这个过程对我来说非常有启发性,我希望你也能感受到。我会尽力重现这个经历,并附上我一路学到的教训。让我们开始吧!所......
  • python开发之个微群聊机器人开发
    请求URL:http://域名地址/inviteChatRomMember请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识chatRomI是String群userList是String群成员微信id,多个已","分割返回数据:参数名类型说明codestring1......
  • python提取图片中文字
    一.安装tesseract-ocr1.1tesseract-ocr下载下载地址:Indexof/tesseract(uni-mannheim.de)1.2完成tesseract-ocr安装,记住安装路径用于配置环境变量1.3配置环境变量将tesseract-ocr的安装路径添加到环境变量的系统变量(PATH)增加一个TESSDATA_PREFIX变量名,变量值还是安装路......
  • 代码随想训练营第四十四天(Python)| 完全背包、518. 零钱兑换 II 、377. 组合总和 Ⅳ
    [完全背包]有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。1、先遍历物品再遍历背包defall_bag(weight,value,bag_weight):dp=[0]*......
  • python flask下载功能
    前言flask下载功能一、约定要下载文件绝对路径:/tmp/flask_web/download/test.tar.gzpy主程序:/tmp/flask_web/main.py二、main.py内容@app.route("/down/<path:filename>",methods=['GET','POST'])defdownload_file(filename):try:#......
  • Rust std fs 比 Python 慢!真的吗!?
    作者:XuanwoDatabendLabs成员,数据库研发工程师https://github.com/xuanwo我即将分享一个冗长的故事,从OpenDAL的op.read()开始,以一个意想不到的转折结束。这个过程对我来说非常有启发性,我希望你也能感受到。我会尽力重现这个经历,并附上我一路学到的教训。让我们开始吧!......
  • python图像中如何 绘制矩形,编辑文案,保存结果图片等操作
    python版opencv函数学习笔记-cv.rectangle()全参数理解cv2.rectangle(img,pt1,pt2,color,thickness=None,lineType=None,shift=None)以下来自官方文档和自己的理解img:指定一张图片,在这张图片的基础上进行绘制;pt1:矩形的一个顶点;pt2:与pt1在对角线上相对的矩形的顶点;......
  • 【5.0】Python面向对象之组合
    【一】什么是组合在一个类中以另外一个类的对象作为数据属性,称为类的组合。【二】组合的使用组合与继承都是用来解决代码的重用性问题。不同的是:继承是一种“是”的关系,比如老师是人、学生是人,当类之间有很多相同的之处,应该使用继承;而组合则是一种“有”的关系,比如老......
  • 【8.0】Python面向对象之反射
    【一】反射【1】什么是反射反射是一种程序可以访问、检测和修改其本身状态或行为的能力。在Python中,反射主要指通过字符串的形式操作对象的属性。【2】Python中的反射通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)【二】反射方法......
  • 【7.0】Python面向对象之绑定方法与非绑定方法
    【一】绑定方法与非绑定方法介绍【1】绑定方法绑定给谁,谁来调用就自动将它本身当作第一个参数传入(1)绑定到类的方法用classmethod装饰器装饰的方法。为类量身定制类.boud_method(),自动将类当作第一个参数传入(其实对象也可调用,但仍将类当作第一个参数传入)(2)绑定......