| 
<?php// Very Basic Example of a Chat Room Service (no verifiction used [anyone can impersonate anyone])
 chdir(__DIR__);
 require_once 'WebSocket.class.php';
 require_once 'WebClientService.class.php';
 class ChatRoom extends WebClientService{
 const ROOM_MESSAGE = 'r';
 public function dataReceived(){
 // When data is received from the WebSocket (browser)
 if($this->currentData)
 $this->sendToParent(self::ROOM_MESSAGE, $this->currentData);
 Console::log("WS:".print_r($this->currentData, true));
 }
 public function parentDataRecv($type, $data){
 // When data is received from the parent process
 switch($type){
 case self::ROOM_MESSAGE:
 Console::log("parentData:".$data);
 if($data)
 $this->send($data);
 break;
 }
 }
 }
 
 // When WebSocket exists it leaves $child and $parent variables available in the global scope.
 // $child is the socket to the connection of the WebSocket (browser/user)
 // $parent is the socket opened to the parent process for inter-process-communication.
 new WebSocket('0.0.0.0', 2595);
 
 if(function_exists('gc_collect_cycles'))
 gc_collect_cycles();
 if($child && empty($forked)){
 $ChatRoom = new ChatRoom($child, $parent);
 $ChatRoom->close();
 }
 Console::log("Closing process: " . getmypid());
 |