问题场景
客户端A点击制作书籍,跳转到服务B进行制作书籍,服务B点击保存书籍后,需要通知服务A进行页面刷新。现在问题是客户端A不能进行同步刷新。
服务关系图

B_clinet保存后无法发送消息到A_server
(怎么确定A_server接收不到消息忽略)
页面布局是index.html嵌套IFRAME,IFRAME页面展示书籍内容。
websocket是在index页面进行初始化,保存后在IFRAME页面直接调用websocket.send(message),子页面是无法直接调用父页面对象的。
需要加上window.parent.xxx进行调用
A_server接收到消息后进行转发到A_clinet
B_clinet发送消息到A_server已经解决了,这时A_server就可以接收到消息,
A_server对消息事件进行广播。
但是A_clinet却接收不到消息,偶尔能接收到,通过console打印日志,发现创建和关闭能正常打印,唯独消息监听不能打印(具体原因不详)。
现在就非常奇怪了,页面加载完成之后偶尔能接收到消息,接收到消息后,不多久又不能接收消息!感觉像断开了连接一样。
有了这个想法就开始测试,在error和close方法中调用一个reconnect方法重新连接,果然消息能正常接收。
WebSocket通信中A_client接收断断续续:问题诊断与解决
本文探讨了客户端A在通过服务B制作书籍并保存后,由于嵌套IFRAME和WebSocket通信的问题,导致A_client接收到服务B消息不稳定的状况。作者详细描述了问题排查过程,包括错误推断、子页面与父页面交互、服务A接收延迟等,并最终通过重连机制确保了消息稳定接收。
638

被折叠的 条评论
为什么被折叠?



