Python中serve()函数的基本用法及实例演示
在Python中,serve()函数是用于启动一个WebSocket服务器的函数。它可以监听指定的host和port,并处理来自客户端的连接请求。
serve()函数的基本用法如下:
import asyncio
from aiohttp import web
async def handler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == web.WSMsgType.TEXT:
if msg.data == 'close':
await ws.close()
else:
await ws.send_str('Hello, {}'.format(msg.data))
elif msg.type == web.WSMsgType.ERROR:
print('WebSocket connection closed with exception {}'.format(ws.exception()))
return ws
app = web.Application()
app.router.add_get('/ws', handler)
web.run_app(app, host='localhost', port=8080)
在上面的例子中,我们首先定义了一个异步函数handler()作为处理WebSocket连接的处理器。在处理器函数中,我们首先创建了一个WebSocketResponse对象,并通过prepare()方法准备了该对象。
然后,通过await ws.prepare(request)等待客户端连接完成。
接下来,我们使用async for msg in ws循环接收来自客户端的信息。在循环中,我们首先判断接收到的信息类型,如果是文本类型的信息,我们判断具体的信息内容是否为'close',如果是,我们通过await ws.close()关闭连接;否则,我们通过await ws.send_str()向客户端发送一条带有信息内容的文本消息。
最后,我们通过return ws返回WebSocketResponse对象。
接着,我们创建了一个web.Application对象,并将handler()函数添加到路由中。我们指定了WebSocket连接的URL为'/ws'。
最后,我们通过web.run_app()函数启动服务器,监听本机的localhost地址和8080端口。
以下是一个使用serve()函数的实例演示:
import asyncio
from aiohttp import web
async def handler(request):
ws = web.WebSocketResponse()
await ws.prepare(request)
async for msg in ws:
if msg.type == web.WSMsgType.TEXT:
if msg.data == 'close':
await ws.close()
else:
await ws.send_str('Hello, {}'.format(msg.data))
elif msg.type == web.WSMsgType.ERROR:
print('WebSocket connection closed with exception {}'.format(ws.exception()))
return ws
app = web.Application()
app.router.add_get('/ws', handler)
web.run_app(app, host='localhost', port=8080)
在上面的例子中,我们创建了一个简单的WebSocket服务器,它可以接收客户端发送的文本消息,并对消息进行处理后发送给客户端。当客户端发送'close'消息时,服务器会关闭连接。
可以使用websocket测试工具或者浏览器插件来模拟WebSocket客户端与服务器进行通信。例如,在Chrome浏览器中,可以使用Simple WebSocket Client插件来模拟WebSocket客户端。
以上就是serve()函数的基本用法及实例演示。
