WebSocket断线重连时,将上次的cookie带上,防止负载均衡场景下被分发到不同的网关

引擎版本:3.8.7/3.8.8

1、使用场景:
在负载均衡场景下,SLB 通常会在第一次连接时在 Response Header 中插入一个特殊的 Cookie(例如 SERVERID )。如果客户端下次请求不带上这个 Cookie,负载均衡器可能会将连接分发到不同的后端网关,导致连接校验失败或状态丢失

2、网页端:
可以直接通过document.cookie获取到,不做说明

3、安卓原生端:WebSocket-okhttp.cpp
3.1、新增g_LastAndroidWSCookie保存cookie,如果项目内有多个长链接,可以使用map来存储
image

3.2、获取并保存cookie

3.3、断线重连注入cookie

3.4、测试结果
断线重连时,将cookie注入,重连成功时,可以看到返回的cookie,格式为:SERVERID=后端服务器的唯一 ID|最后访问时间戳|会话开始的时间戳; 只要 前缀(机器 ID)没变 ,就说明没有漂移到其他网关

4、ios原生端:WebSocket-apple.mm
4.1、新增g_LastAppleWSCookie保存cookie
image

4.2、获取并保存cookie

4.3、断线重连注入cookie

4.4、测试结果
目前没有ios环境,没有测试是否正常…

1赞