<?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());
|