Home > Article > PHP Framework > How workerman stays connected
Under normal circumstances, when the client disconnects, it will send a fin packet to the server. After receiving the fin packet, the server learns that the client connection is disconnected and immediately triggers the onClose event callback. .
However, there are some extreme situations such as client power outage, network shutdown, network cable unplugging, routing failure, etc. In these extreme situations, the client cannot send the fin packet to the server, and the server cannot know that the connection has been disconnected. If there is regular heartbeat data transmission between the client and the server, the disconnection of the connection will be discovered in a relatively timely manner and the onClose event callback will be triggered.
In addition, the routing node firewall will close socket connections that have not communicated for a long time, causing long socket connections to be disconnected. Therefore requires the client and server to send heartbeat data regularly to keep the connection from being disconnected.
How to configure heartbeat detection in GatewayWorker?
Currently GatewayWorker supports two types of heartbeat detection. The server sets the number of seconds to close the connection if it does not receive a heartbeat (recommended). It also supports the server to send heartbeat data to the client regularly (not recommended).
The client sends heartbeats regularly (recommended)
The client sends heartbeats to the server regularly (the interval is preferably less than 60 seconds). The server configuration is similar to the following:
$gateway = new Gateway("Websocket://0.0.0.0:8585"); $gateway->pingInterval = 55; $gateway->pingNotResponseLimit = 1; $gateway->pingData = '';
The meaning of the above configuration is that if there is no request within 55 seconds of client connection pingInterval*pingNotResponseLimit=55 seconds, the server will think that the corresponding client has dropped offline, and the server will close the connection and trigger the onClose callback.
For more workerman knowledge, please pay attention to the workerman tutorial column.
The above is the detailed content of How workerman stays connected. For more information, please follow other related articles on the PHP Chinese website!