Example of using swoole to expand php websocket
The goal of the WebSocket specification is to implement bidirectional communication with the server in the browser. Two-way communication can expand the application types on the browser. If you want to use PHP to write websocket applications, swoole_framework must be the best choice. For more information, see
The Code is as follows:
<? Php
Define ('debug', 'on ');
Define ("WEBPATH", str_replace ("", "/", _ DIR __));
Require _ DIR _. '/../libs/lib_config.php ';
Class WebSocket extends SwooleNetworkProtocolWebSocket
{
/**
* Notify everyone when going offline
*/
Function onClose ($ serv, $ client_id, $ from_id)
{
// Send the offline message to everyone
// $ This-> log ("onOffline:". $ client_id );
// $ This-> broadcast ($ client_id, "onOffline:". $ client_id );
Parent: onClose ($ serv, $ client_id, $ from_id );
}
/**
* When a message is received
* @ See WSProtocol: onMessage ()
*/
Function onMessage ($ client_id, $ ws)
{
$ This-> log ("onMessage:". $ client_id. '='. $ ws ['message']);
$ This-> send ($ client_id, "Server:". $ ws ['message']);
// $ This-> broadcast ($ client_id, $ ws ['message']);
}
Function broadcast ($ client_id, $ msg)
{
Foreach ($ this-> connections as $ clid => $ info)
{
If ($ client_id! = $ Clid)
{
$ This-> send ($ clid, $ msg );
}
}
}
}
$ Alibaba Vr = new WebSocket ();
$ Export VR-> loadSetting (_ DIR _. "/swoole. ini"); // load the configuration file
$ Export VR-> setLogger (new SwooleLogEchoLog (true); // Logger
$ Server = new SwooleNetworkServer ('0. 0.0.0.0 ', 9503 );
$ Server-> setProtocol ($ community vr );
// $ Server-> daemonize (); // serves as the daemonize Process
$ Server-> run (array ('worker _ num' => 4 ));