赞
踩
客户端和服务端都可发送或接收数据。发送和接收相互独立,异步并发。
python3.6.8
websockets9.1
import asyncio import websockets async def send(websocket): while True: await asyncio.sleep(1) #此协程挂起1s,以切换到其他协程。不加此行不会切换到另一个协程。此处用time.sleep()不能起到这个作用。 #可以在此产生数据然后send出去。 await websocket.send("hello") #正常地发送,不会切换到receive() print("send hello") async def receive(websocket): while True: await asyncio.sleep(1) #此协程挂起1s,以切换到其他协程。不加此行不会切换到另一个协程。此处用time.sleep()不能起到这个作用。 greeting = await websocket.recv() #正常地接收,不会切换到send() print("receive "+greeting) async def hello(websocket, path): a = asyncio.get_event_loop().create_task(send(websocket)) b = asyncio.get_event_loop().create_task(receive(websocket)) #使用create_task()创建task await a await b # ab并发 # ab并发,下面这行代码不会执行 print("wait") #print("wait")不会执行 start_server = websockets.serve(hello, "localhost", 8766) asyncio.get_event_loop().run_until_complete(start_server) asyncio.get_event_loop().run_forever()
import asyncio import websockets async def send(websocket): while True: await asyncio.sleep(1) #此协程挂起1s,以切换到其他协程。不加此行不会切换到另一个协程。此处用time.sleep()不能起到这个作用。 await websocket.send("hello") #正常地发送,不会切换到receive() print("send hello") async def receive(websocket): while True: await asyncio.sleep(1) #此协程挂起1s,以切换到其他协程。不加此行不会切换到另一个协程。此处用time.sleep()不能起到这个作用。 greeting = await websocket.recv() #正常地接收,不会切换到send() print("receive"+greeting) async def hello(): uri = "ws://localhost:8766" async with websockets.connect(uri) as websocket: a = asyncio.get_event_loop().create_task(send(websocket)) b = asyncio.get_event_loop().create_task(receive(websocket)) await a await b # ab并发,下面这行代码不会执行 print("wait") #print("wait")不会执行 asyncio.get_event_loop().run_until_complete(hello())
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。