Server

服务器通过 WebsocketServer 连接多个 YDoc

下面是使用 websockets 库的代码示例:

import asyncio
from websockets import serve
from pycrdt_websocket import WebsocketServer

async def server():
    async with (
        WebsocketServer() as websocket_server,
        serve(websocket_server.serve, "localhost", 1234),
    ):
        await asyncio.Future()  # 永久运行

asyncio.run(server())

Pycrdt-websocket 也可以与 ASGI 服务器一起使用。下面是使用 Uvicorn 的代码示例:

# main.py
import asyncio
import uvicorn
from pycrdt_websocket import ASGIServer, WebsocketServer

websocket_server = WebsocketServer()
app = ASGIServer(websocket_server)

async def main():
    config = uvicorn.Config("main:app", port=5000, log_level="info")
    server = uvicorn.Server(config)
    async with websocket_server:
        task = asyncio.create_task(server.serve())
        while not server.started:
            await asyncio.sleep(0)

        await asyncio.Future()  # 永久运行

asyncio.run(main())