本项目实现通过小程序实现语音通知功能,测试环境使用nginx转发一切正常。 业务架构: ![]() 公网请求到总行F5----转发到分行F5----分发到接入前置NGINX----分发到语音服务器 问题描述: 1. Websocket通道建立成功 2. 客户端不能WebSocket消息转发到服务器。 3. 服务器能够WebSocket消息转发到客户端。 分析及解决过程 问题出现首先就是查看日志,通道wss://xxx.com/voice/websocket可以正常建立,客户端发送消息到服务端进行绑定时发送失败。首先想到是nginx问题,检查nginx配置参数:
参数正常。 第一步: 过滤掉总F5,分行F5进行测试,一切正常。 问题原因总行F5 或者分行F5转发导致不能收发消息。 第二步: 过滤掉总行F5,程序直连分行F5转发到nginx接入前置测试, 问题重现,说明分行F5配置有问题。 初步分析引起问题的原因: Websocket 使用http协议来完成部分握手,这个http报文中有包含'Upgrade:websocket',这是要告诉服务器'我要切换协议'。服务器接收后,回复一个http报文,告诉客户端'OK,我已经切换到websocket协议了'。到此一切正常,客户端发送商户标识到服务端进行绑定,服务端没有收到websocket消息,F5没有识别到websocket协议转发。 解决方案:
最后连接F5测试,一切OK |
|
来自: liang1234_ > 《websocket》