Ejemplo n.º 1
0
 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;
         }
     }
 }
Ejemplo n.º 2
0
 public static function getInstance()
 {
     if (!self::$instance) {
         self::$instance = new WebSocketServer();
     }
     return self::$instance;
 }
Ejemplo n.º 3
0
 /**
  * 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);
     });
 }
Ejemplo n.º 4
0
 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);
     }
 }
Ejemplo n.º 5
0
<?php

include 'WebSocketServer.php';
// Start WebSocketServer
$server = new WebSocketServer("0.0.0.0", 12345);
$server->debug = true;
$server->begin();
Ejemplo n.º 6
0
 /**
  *  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);
 }
Ejemplo n.º 7
0
 public function start($addr, $port)
 {
     parent::__construct($addr, $port);
 }
Ejemplo n.º 8
0
<?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) {
Ejemplo n.º 9
0
            }
        }
    } 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();
Ejemplo n.º 10
0
 public function __construct($ip, $port)
 {
     parent::__construct($ip, $port);
     $this->databaseManager = new DatabaseManager();
     $this->databaseManager->openTable('notifications', json_decode(DatabaseManager::$table5));
 }
Ejemplo n.º 11
0
 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.
Ejemplo n.º 13
0
 public function __construct($ip, $port)
 {
     parent::__construct($ip, $port);
     $this->proto = new Protocol($this);
 }
Ejemplo n.º 14
0
 /**
  * Called when the worker is ready to go.
  * @return void
  */
 public function onReady()
 {
     parent::onReady();
     $this->WS = WebSocketServer::getInstance();
 }
Ejemplo n.º 15
0
 public function send($msg)
 {
     $this->response(WebSocketServer::mask($msg));
     return true;
 }