websockets.serve处理器中无法获取WebSocket连接路径的问题
获取WebSocket连接路径的正确方法(websockets 14.1版本)
在websockets 10.x及以后的版本中,官方已弃用通过处理器第二个参数获取请求路径的方式,同时ServerConnection对象不再直接暴露path属性。要获取连接的请求路径,需通过websocket.request.path访问。
修正后的代码
import asyncio from websockets import serve from websockets.server import ServerConnection async def handler(websocket: ServerConnection): # 通过request属性获取请求路径 print(websocket.request.path) async def main(): server = await serve( handler, "0.0.0.0", 9000, ) print("Server started on 0.0.0.0:9000") await server.wait_closed() if __name__ == "__main__": asyncio.run(main())
关键说明
websocket.request是http.Request对象,包含WebSocket握手阶段的HTTP请求信息,除path外,还可获取请求头(websocket.request.headers)、请求方法(websocket.request.method)等其他HTTP属性。- 官方弃用旧方法是为了统一请求信息的访问逻辑,将所有HTTP相关内容整合到
request属性下,让API设计更清晰一致。
内容的提问来源于stack exchange,提问作者Harold Obasi
相关产品推荐
相关产品推荐

