问题场景
客户端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接收到消息后容易断开连接。
|