Skip to content

Commit a92914b

Browse files
committed
Documentation
1 parent 5f29b1f commit a92914b

File tree

2 files changed

+44
-56
lines changed

2 files changed

+44
-56
lines changed

docs/Server.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ WebSocket\Server {
3535
public getRemoteName() : string|null;
3636
public getLastOpcode() : string;
3737
public getCloseStatus() : int;
38-
public isConnected() : bool
38+
public isConnected() : bool;
3939
public setTimeout(int $seconds) : void;
4040
public setFragmentSize(int $fragment_size) : self;
4141
public getFragmentSize() : int;

examples/echoserver.php

+43-55
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
echo "> Using logger\n";
3333
}
3434

35-
// Initiate server
35+
// Initiate server.
3636
try {
3737
$server = new Server($options);
3838
} catch (ConnectionException $e) {
@@ -42,58 +42,46 @@
4242

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

45-
$server->listen(function ($message, $connection = null) use ($server) {
46-
$content = $message->getContent();
47-
$opcode = $message->getOpcode();
48-
$peer = $connection ? $connection->getPeer() : '(closed)';
49-
echo "> Got '{$content}' [opcode: {$opcode}, peer: {$peer}]\n";
50-
51-
// Connection closed, can't respond
52-
if (!$connection) {
53-
echo "> Connection closed\n";
54-
return; // Continue listening
55-
}
56-
57-
if (in_array($opcode, ['ping', 'pong'])) {
58-
$connection->text($content);
59-
echo "< Sent '{$content}' [opcode: text, peer: {$peer}]\n";
60-
return; // Continue listening
45+
// Force quit to close server
46+
while (true) {
47+
try {
48+
while ($server->accept()) {
49+
echo "> Accepted on port {$server->getPort()}\n";
50+
while (true) {
51+
$message = $server->receive();
52+
$opcode = $server->getLastOpcode();
53+
if (is_null($message)) {
54+
echo "> Closing connection\n";
55+
continue 2;
56+
}
57+
echo "> Got '{$message}' [opcode: {$opcode}]\n";
58+
if (in_array($opcode, ['ping', 'pong'])) {
59+
$server->send($message);
60+
continue;
61+
}
62+
// Allow certain string to trigger server action
63+
switch ($message) {
64+
case 'exit':
65+
echo "> Client told me to quit. Bye bye.\n";
66+
$server->close();
67+
echo "> Close status: {$server->getCloseStatus()}\n";
68+
exit;
69+
case 'headers':
70+
$server->text(implode("\r\n", $server->getRequest()));
71+
break;
72+
case 'ping':
73+
$server->ping($message);
74+
break;
75+
case 'auth':
76+
$auth = $server->getHeader('Authorization');
77+
$server->text("{$auth} - {$message}");
78+
break;
79+
default:
80+
$server->text($message);
81+
}
82+
}
83+
}
84+
} catch (ConnectionException $e) {
85+
echo "> ERROR: {$e->getMessage()}\n";
6186
}
62-
63-
// Allow certain string to trigger server action
64-
switch ($content) {
65-
case 'auth':
66-
$auth = "{$server->getHeader('Authorization')} - {$content}";
67-
$connection->text($auth);
68-
echo "< Sent '{$auth}' [opcode: text, peer: {$peer}]\n";
69-
break;
70-
case 'close':
71-
$connection->close(1000, $content);
72-
echo "< Sent '{$content}' [opcode: close, peer: {$peer}]\n";
73-
break;
74-
case 'exit':
75-
echo "> Client told me to quit.\n";
76-
$server->close();
77-
return true; // Stop listener
78-
case 'headers':
79-
$headers = trim(implode("\r\n", $server->getRequest()));
80-
$connection->text($headers);
81-
echo "< Sent '{$headers}' [opcode: text, peer: {$peer}]\n";
82-
break;
83-
case 'ping':
84-
$connection->ping($content);
85-
echo "< Sent '{$content}' [opcode: ping, peer: {$peer}]\n";
86-
break;
87-
case 'pong':
88-
$connection->pong($content);
89-
echo "< Sent '{$content}' [opcode: pong, peer: {$peer}]\n";
90-
break;
91-
case 'stop':
92-
$server->stop();
93-
echo "> Client told me to stop listening.\n";
94-
break;
95-
default:
96-
$connection->text($content);
97-
echo "< Sent '{$content}' [opcode: text, peer: {$peer}]\n";
98-
}
99-
});
87+
}

0 commit comments

Comments
 (0)