<?php
Imports("php.websocket");
class WsAppHandler implements PHP\WebSocket\SocketListener {
private $app;
public function __construct() {
$this->app = [];
}
public function onMessageRecieved(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $sender,
$message
) {
if (array_key_exists("message", $this->app)) {
$app = $this->app["message"];
$app($server, $sender, $message);
}
}
public function onClientConnected(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $client
) {
if (array_key_exists("connect", $this->app)) {
$app = $this->app["connect"];
$app($server, $client);
}
}
public function onClientDisconnected(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $client
) {
if (array_key_exists("disconnect", $this->app)) {
$app = $this->app["disconnect"];
$app($server, $client);
}
}
public function onLogMessage(
PHP\WebSocket\SocketServer $server,
$message
) {
if (array_key_exists("log", $this->app)) {
$app = $this->app["log"];
$app($server, $message);
}
}
static $appNames = [
"message" => 0,
"connect" => 1,
"disconnect" => 2,
"log" => 3
];
public function on($name, $handler) {
if (array_key_exists($name = strtolower($name), self::$appNames)) {
$this->app[$name] = $handler;
} else {
throw new Exception("[$name] is not recognized as any WS app!");
}
return $this;
}
}
class Websocket {
private $socket;
public function __construct(
$host = '127.0.0.1'
) {
$this->socket = new PHP\WebSocket\SocketServer($host);
}
public function Handles(PHP\WebSocket\SocketListener $app) {
$this->socket->addListener($app);
return $this;
}
public function listen($port, $maxConnections = SOMAXCONN) {
$this->socket->listen($port, $maxConnections);
}
}
class PushServer implements PHP\WebSocket\SocketListener {
public $users = [];
public function onMessageRecieved(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $sender,
$message
) {
}
public function onClientConnected(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $client
) {
}
public function onClientDisconnected(
PHP\WebSocket\SocketServer $server,
PHP\WebSocket\SocketClient $client
) {
}
public function onLogMessage(
PHP\WebSocket\SocketServer $server,
$message
) {
}
}
class User {
public $ID;
public $connections = [];
public function __construct($user_id) {
$this->ID = strval($user_id);
}
public function Push($message) {
foreach($this->connections as $client) {
$client->send($message);
}
}
}