Updated example, readme

This commit is contained in:
2024-02-24 00:15:57 +01:00
parent 560e5f7881
commit 16fa77229c
2 changed files with 23 additions and 11 deletions

View File

@ -10,8 +10,14 @@ use React\Http\Message\Response;
use React\Promise\Promise;
use React\Socket\SocketServer;
// The middleware is at the core, as it intercepts and breaks out the websocket
// connections received by the HttpServer.
$websockets = new WebSocketMiddleware();
// The 'connection' handler works like expected. You can't however write any data
// to the client yet, as the websocket streams have not yet been returned.
$websockets->on('connection', function (WebSocketInterface $websocket) {
// This just echoes text received, unless the websocket is part of a group.
// In this case the message is sent to all websockets in the group.
$websocket->on('text', function ($text) use ($websocket) {
if (str_starts_with($text, '#')) {
$websocket->setGroup(substr($text,1));
@ -27,8 +33,10 @@ $websockets->on('connection', function (WebSocketInterface $websocket) {
});
});
// Create the server with our middleware chain:
// error handler -> websocket handler -> http handler
$server = new HttpServer(
$websockets,
// Error handler
function (ServerRequestInterface $request, callable $next) {
$promise = new Promise(function ($resolve) use ($next, $request) {
$resolve($next($request));
@ -39,11 +47,14 @@ $server = new HttpServer(
)->withStatus(Response::STATUS_INTERNAL_SERVER_ERROR);
});
},
// WebSocket handler
$websockets,
// HTTP handler
function (ServerRequestInterface $request) {
return Response::plaintext("Hello world!");
}
);
// Everything else is as expected!
$socket = new SocketServer("tcp://0.0.0.0:8000");
$server->listen($socket);
$server->listen($socket);