Closed zek closed 1 year ago
Can you send a PR that adds support for Pushers ping/pong implementation?
I have almost similar issue on the lastPongedAt. Whenever the client receives an event, ping is not issued until 30seconds of inactivity. In a very busy client-server scenario where almost always we get events from channel, ping/pong is not being triggered as it is not idle for 30seconds (pusher default). Hence, connections are not updated with lastPongedAt and are treated as obsolete connections and are removed. #778 adds an update to mark the connections as ponged whenever we send messages to subscribers.
I find myself having long running web pages (days or months) timeout after a while. Is there any progress on this issue? Is this something that needs to be implemented on the Ratchet side of things?
Bug Explanation
I was testing websockets on an iOS application and noticed after 2 minutes events stopped cuz connection is marked as idle and removed due to
lastPongedAt
However ping sent from iOS client and it receives pong response successfully. However it doesn't send
pusher:ping
instead it send ping message in TCP layer.So ping messages were captured by Ratchet WsServer while laravel-websockets expects ping message differently.
Solution
I override
onControlFrame
as following and it works like a charm.If you check https://pusher.com/docs/channels/library_auth_reference/pusher-websockets-protocol#ping-and-pong-messages they mention
So it could be nice if we can support this functionality.