python的websockets库

发布时间 2023-11-30 16:11:46作者: mlto

安装 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 然后捕获相应的错误