欢迎访问宙启技术站
智能推送

Python中serve()函数的基本用法及实例演示

发布时间:2024-01-20 05:30:47

在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()函数的基本用法及实例演示。