当前位置:   article > 正文

自学 python 中的异步编程 asyncio:实战(三)websocket服务_asyncio websockets

asyncio websockets
  • 利用python协程库写了关于websocket通信的简单代码
  • 流程比较简单粗略,主要用于学习协程asyncio库,阅读阅读即可理解
  • 关于websockets库,还有很多要学习的地方,后面我将为此再开一个自学专栏

server 端代码

import asyncio
import time

import websockets


# 处理websocket连接请求的协程函数
async def handler(websocket):
    print(f"[{time.asctime()} connection established]")
    async for message in websocket:
        print(f"[{time.asctime()} from client] {message}")
        await websocket.send(message)


# 开启服务器的协程函数

async def start_s():
    # 通过websockets库创建服务器,并指定协议、IP地址和端口号
    async with websockets.serve(handler, "localhost", 8765, ping_interval=200, ping_timeout=200, timeout=2000):
        print(f"{time.asctime()}[Server Started]")

        await asyncio.Future()  # 通过返回一个永久等待的协程,让协程函数一直运行


if __name__ == '__main__':
    asyncio.run(start_s())


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

client 端代码

import asyncio
import time

import websockets


async def start_c():
    # 与WebSocket服务器建立连接
    async with websockets.connect("ws://localhost:8765", ping_interval=200, ping_timeout=200,
                                  timeout=2000) as websocket:
        while True:
            msg = input("please input: ")
            await websocket.send(msg)

            # 等待服务器返回响应消息
            message = await websocket.recv()
            print(f"[{time.asctime()}from server]: {message}")


if __name__ == '__main__':
    asyncio.run(start_c())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/85321
推荐阅读
相关标签
  

闽ICP备14008679号