Skip to content

Commit

Permalink
Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
sirn-se committed Oct 29, 2022
1 parent 5f29b1f commit a92914b
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 56 deletions.
2 changes: 1 addition & 1 deletion docs/Server.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ WebSocket\Server {
public getRemoteName() : string|null;
public getLastOpcode() : string;
public getCloseStatus() : int;
public isConnected() : bool
public isConnected() : bool;
public setTimeout(int $seconds) : void;
public setFragmentSize(int $fragment_size) : self;
public getFragmentSize() : int;
Expand Down
98 changes: 43 additions & 55 deletions examples/echoserver.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
echo "> Using logger\n";
}

// Initiate server
// Initiate server.
try {
$server = new Server($options);
} catch (ConnectionException $e) {
Expand All @@ -42,58 +42,46 @@

echo "> Listening to port {$server->getPort()}\n";

$server->listen(function ($message, $connection = null) use ($server) {
$content = $message->getContent();
$opcode = $message->getOpcode();
$peer = $connection ? $connection->getPeer() : '(closed)';
echo "> Got '{$content}' [opcode: {$opcode}, peer: {$peer}]\n";

// Connection closed, can't respond
if (!$connection) {
echo "> Connection closed\n";
return; // Continue listening
}

if (in_array($opcode, ['ping', 'pong'])) {
$connection->text($content);
echo "< Sent '{$content}' [opcode: text, peer: {$peer}]\n";
return; // Continue listening
// Force quit to close server
while (true) {
try {
while ($server->accept()) {
echo "> Accepted on port {$server->getPort()}\n";
while (true) {
$message = $server->receive();
$opcode = $server->getLastOpcode();
if (is_null($message)) {
echo "> Closing connection\n";
continue 2;
}
echo "> Got '{$message}' [opcode: {$opcode}]\n";
if (in_array($opcode, ['ping', 'pong'])) {
$server->send($message);
continue;
}
// Allow certain string to trigger server action
switch ($message) {
case 'exit':
echo "> Client told me to quit. Bye bye.\n";
$server->close();
echo "> Close status: {$server->getCloseStatus()}\n";
exit;
case 'headers':
$server->text(implode("\r\n", $server->getRequest()));
break;
case 'ping':
$server->ping($message);
break;
case 'auth':
$auth = $server->getHeader('Authorization');
$server->text("{$auth} - {$message}");
break;
default:
$server->text($message);
}
}
}
} catch (ConnectionException $e) {
echo "> ERROR: {$e->getMessage()}\n";
}

// Allow certain string to trigger server action
switch ($content) {
case 'auth':
$auth = "{$server->getHeader('Authorization')} - {$content}";
$connection->text($auth);
echo "< Sent '{$auth}' [opcode: text, peer: {$peer}]\n";
break;
case 'close':
$connection->close(1000, $content);
echo "< Sent '{$content}' [opcode: close, peer: {$peer}]\n";
break;
case 'exit':
echo "> Client told me to quit.\n";
$server->close();
return true; // Stop listener
case 'headers':
$headers = trim(implode("\r\n", $server->getRequest()));
$connection->text($headers);
echo "< Sent '{$headers}' [opcode: text, peer: {$peer}]\n";
break;
case 'ping':
$connection->ping($content);
echo "< Sent '{$content}' [opcode: ping, peer: {$peer}]\n";
break;
case 'pong':
$connection->pong($content);
echo "< Sent '{$content}' [opcode: pong, peer: {$peer}]\n";
break;
case 'stop':
$server->stop();
echo "> Client told me to stop listening.\n";
break;
default:
$connection->text($content);
echo "< Sent '{$content}' [opcode: text, peer: {$peer}]\n";
}
});
}

0 comments on commit a92914b

Please sign in to comment.