python network_error ai_generated true

aiohttp 客户端异常:无效的 WebSocket 握手

aiohttp.client_exceptions.WSServerHandshakeError: Invalid websocket handshake

ID: python/aiohttp-websocket-handshake-error

其他格式: JSON · Markdown 中文 · English
80%修复率
83%置信度
0证据数
2024-11-20首次发现

版本兼容性

版本状态引入弃用备注
3.10 active
3.11 active

根因分析

服务器不支持 WebSocket 协议或握手响应格式错误。

English

The server does not support WebSocket protocol or the handshake response is malformed.

generic

解决方案

  1. 90% 成功率 Verify server WebSocket endpoint and use correct URL scheme (ws:// or wss://)
    async with session.ws_connect('wss://example.com/ws') as ws:
        async for msg in ws:
  2. 80% 成功率 Fall back to HTTP long polling if WebSocket fails
    try:
        async with session.ws_connect(url) as ws:
            # use websocket
    except aiohttp.WSServerHandshakeError:
        # fallback to polling

无效尝试

常见但无效的做法:

  1. Using a different WebSocket library without checking server compatibility 60% 失败

    The server itself may not support WebSocket, so changing the client library won't help.

  2. Adding custom headers to the handshake request 50% 失败

    If the server rejects WebSocket at the protocol level, custom headers won't fix it.