Session ID unknown 基本就是握手没粘到同一个后端导致的。polling 模式下几次握手轮流落到不同节点,节点间不共享 session 就凉了。
可以试试这几个方向:
EdgeOne 上给 /socket.io/* 单独配条规则,关闭缓存、开 WebSocket 透传,socket.io 的响应千万不能被缓存;
把 EdgeOne 的会话保持打开(按 Cookie 粘滞),保证同一客户端一直落在同一个源;
如果源站是多台机器,考虑用 Redis adapter 做 session 共享,或者干脆切 websocket-only 传输。
我之前套 CDN 也踩过一模一样的坑,就是 socket.io 路径被缓存了,一关就好。楼主可以 F12 看看 socket.io 请求的响应头有没有 CDN 的缓存标记确认下。