Support WebSocket Ping/Pong #765
Description
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
In protocol versions 5 and above, when using an old version of the WebSocket protocol, Pusher Channels will send pusher:ping event
So it could be nice if we can support this functionality.