php后端给前端推送消息,是不是只要浏览器没关闭,都能正常推送

cxy201609

大神你好,昨天刚接触这个workerman框架,现在有个问题,就是php后端主动向前端浏览器页面推送消息,采用的是文档中给的方案:就是后端通过text协议往worker传数据,然后worker再通过websocket往页面推送 消息。现在有个现象就是打开接受消息的页面,刚开始后端都能正常推送,但是过了一段时间,接受消息的页面就没有显示后端的消息了。是不是还需要配置什么?是不是这种连接有失效时间?我的理解应该是只要浏览器没关闭,这个连接应该都是在的吧。

3029 1 0
1个回答

walkor

有些路由节点会关闭长时间没有活动的socket链接,导致链接在一定时间不活动后就被关闭(不关workerman的事),解决办法就是服务端和客户端定时通讯点数据,就是所谓的心跳数据。

1、浏览器设置一个定时器,定时给服务端发送一个心跳数据(数据内容无所谓)。
2、也可以服务端定时给浏览器发送一个心跳数据。
见手册:http://www.workerman.net/gatewaydoc/gateway-worker-development/heartbeat.html

  • cxy201609 2016-06-10

    是不是底层的机制就是这样的?那发送心跳数据的频率应该多久才是合适的。

  • walkor 2016-06-10

    心跳25秒一次即可。

年代过于久远,无法发表回答
🔝