public function connect(Dog_Server $server, $blocking = 0) { if ($this->connecting) { return $this->socket_try; } $this->connecting = true; // Disconnect, so the child process has no db that it could kill. global $SINGLE_GDO_DB; $SINGLE_GDO_DB->disconnect(); $SINGLE_GDO_DB = null; $pid = pcntl_fork(); if ($pid == -1) { } else { if ($pid) { $this->server = $server; self::$PARENT_PID = $pid; if (!$this->initQueues()) { die('Cannot get message queue :('); } $this->connected = true; gdo_db(); return true; } else { $this->server = $server; // we are the child declare (ticks=1); if (false === pcntl_signal(SIGINT, array($this, 'SIGINT'))) { die('Cannot install SIGINT handler in ' . __FILE__ . PHP_EOL); } if (false === pcntl_signal(SIGCHLD, array($this, 'SIGINT'))) { die('Cannot install SIGCHLD handler in ' . __FILE__ . PHP_EOL); } if (!$this->initQueues()) { die('Cannot get message queue :('); } $this->socket = new WebSocketServer('tcp://0.0.0.0:' . $server->getPort(), 'rob_hubbard_fanclub!'); $this->socket->addObserver($this); $this->socket->initQueue((int) $server->getID()); // sleep(10); // die('oops'); if (false === $this->socket->run($this)) { $this->socket_try = false; return false; } return true; } } }
public static function getInstance() { if (!self::$instance) { self::$instance = new WebSocketServer(); } return self::$instance; }
/** * Called when the worker is ready to go. * @return void */ public function onReady() { $appInstance = $this; // a reference to this application instance for ExampleWebSocketRoute // URI /exampleApp should be handled by ExampleWebSocketRoute WebSocketServer::getInstance()->addRoute('exampleApp', function ($client) use($appInstance) { return new ExampleWebSocketRoute($client, $appInstance); }); }
public function __construct($addr, $port) { parent::__construct($addr, $port); $this->clients = new SplObjectStorage(); // Services $services = @file_get_contents(self::SERVICES_PATH); if ($services) { $this->websocket_services = (array) json_decode($services, true); } }
<?php include 'WebSocketServer.php'; // Start WebSocketServer $server = new WebSocketServer("0.0.0.0", 12345); $server->debug = true; $server->begin();
/** * disconnect * * This is executed when a client is disconnected. It is a cleanup function. * * @param object $socket The socket object of the connected client * @param boolean $triggerClosed Flag to determine if close was triggered by client * @param boolean $sockErrNo (optional) Socket error number * * @access protected */ protected function disconnect($socket, $triggerClosed = true, $sockErrNo = null) { $this->trigger("disconnect", $this->user->id); parent::disconnect($socket, $triggerClosed, $sockErrNo); }
public function start($addr, $port) { parent::__construct($addr, $port); }
<?php // include 'UPnP.php'; include 'WebSocketServer.php'; include 'WebSocketClient.php'; include 'WebSocketEvent.php'; include 'IWebSocketEvent.php'; include 'WebSocketException.php'; try { mb_internal_encoding('UTF-8'); mb_http_input('UTF-8'); mb_http_output('UTF-8'); $serv = new WebSocketServer('0.0.0.0', 8484); $serv->setDisplayLog(true); $serv->registerResource('chat'); $serv->registerResource('lazer'); $serv->registerResource('time'); $serv->registerResource('desktop'); // $serv->setCheckOrigin(array( // 'localhost', // '127.0.0.1' // )); // 全イベント $serv->registerEvent('connect', function ($handle) use(&$serv) { printf("connected %s:%d\n", $handle->address, $handle->port); printf("now \"server\" connections %d\n", $serv->getConnections()); foreach ($serv->getAllResourceConnections() as $resource => $connections) { printf("now \"%s\" connections %d\n", $resource, $connections); } }); $serv->registerEvent('disconnect', function ($handle) use(&$serv) {
} } } else { $server->send($user->socket, json_encode(array('funct' => 'loginConfirm', 'stat' => 'exist'))); } } function myError($user, $request, $response, $function) { $response->send($user->socket, json_encode(array('stat' => 400, 'function' => $function))); } function controller($user, $request, $response) { try { $functions = array('login', 'connect', 'sendMove', 'win'); $data = json_decode($request, true); if (empty($data)) { myError($user, $request, $response, 'invalidJSON'); } else { if (!in_array($data['funct'], $functions)) { myError($user, $request, $response, 'notFound'); } else { call_user_func($data['funct'], $user, $data, $response); } } } catch (Exception $e) { myError($user, $request, $response, 'unknownError'); } } require_once 'socketserver.php'; $webSocket = new WebSocketServer("192.168.1.111", 8083, 'controller'); $webSocket->run();
public function __construct($ip, $port) { parent::__construct($ip, $port); $this->databaseManager = new DatabaseManager(); $this->databaseManager->openTable('notifications', json_decode(DatabaseManager::$table5)); }
public function say($msg = '') { return $this->server->say($msg); }
<?php // Requires both WebSocket and HTTP classes to work. require_once "websocket_server.php"; require_once "support/websocket.php"; require_once "support/http.php"; $wsserver = new WebSocketServer(); echo "Starting server...\n"; $result = $wsserver->Start("127.0.0.1", "5578"); if (!$result["success"]) { var_dump($result); exit; } echo "Ready.\n"; $tracker = array(); do { $result = $wsserver->Wait(); // Do something with active clients. foreach ($result["clients"] as $id => $client) { if (!isset($tracker[$id])) { echo "Client ID " . $id . " connected.\n"; // Example of checking for an API key. $url = HTTP::ExtractURL($client["url"]); if (!isset($url["queryvars"]["apikey"]) || $url["queryvars"]["apikey"][0] !== "123456789101112") { $wsserver->RemoveClient($id); } else { echo "Valid API key used.\n"; } $tracker[$id] = array(); } // This example processes the client input (add/multiply two numbers together) and sends back the result.
public function __construct($ip, $port) { parent::__construct($ip, $port); $this->proto = new Protocol($this); }
/** * Called when the worker is ready to go. * @return void */ public function onReady() { parent::onReady(); $this->WS = WebSocketServer::getInstance(); }
public function send($msg) { $this->response(WebSocketServer::mask($msg)); return true; }