#!/php -q php demo.php require_once("websocket.server.php"); /** * This demo resource handler will respond to all messages sent to /echo/ on the socketserver below * * All this handler does is echoing the responds to the user * @author Chris * */ class DemoEchoHandler extends WebSocketUriHandler { public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg) { $this->say("[ECHO] " . strlen($msg->getData()) . " bytes"); // Echo $user->sendMessage($msg); } public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $obj) { $this->say("[DEMO] Admin TEST received!"); $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame); $user->sendFrame($frame); } } /** * Demo socket server. Implements the basic eventlisteners and attaches a resource handler for /echo/ urls. * * * @author Chris * */ class DemoSocketServer implements IWebSocketServerObserver { protected $debug = true; protected $server; public function __construct() { $this->server = new WebSocketServer("tcp://0.0.0.0:12345", 'superdupersecretkey'); $this->server->addObserver($this); $this->server->addUriHandler("echo", new DemoEchoHandler()); } public function onConnect(IWebSocketConnection $user) { $this->say("[DEMO] {$user->getId()} connected"); } public function onMessage(IWebSocketConnection $user, IWebSocketMessage $msg) { //$this->say("[DEMO] {$user->getId()} says '{$msg->getData()}'"); } public function onDisconnect(IWebSocketConnection $user) { $this->say("[DEMO] {$user->getId()} disconnected"); } public function onAdminMessage(IWebSocketConnection $user, IWebSocketMessage $msg) { $this->say("[DEMO] Admin Message received!"); $frame = WebSocketFrame::create(WebSocketOpcode::PongFrame); $user->sendFrame($frame); } public function say($msg) { echo "$msg \r\n"; } public function run() { $this->server->run(); } } // Start server $server = new DemoSocketServer(); $server->run();