Skip to content

Latest commit

 

History

History
40 lines (33 loc) · 969 Bytes

24.websockets.md

File metadata and controls

40 lines (33 loc) · 969 Bytes

Websockets

You can upgrade an http connection to websockets RFC 6455 using websocket().

namespace CatPaw\Web;
/**
* @param Request $request
* @param WebsocketClientHandler $handler
* @return ResponseModifier
 */
function websocket($request, $handler);

It's not completely automatic as it requires the incoming Request as a dependency.

Other than that it's pretty straightforward

<?php
use Amp\Http\Server\Request;
use function CatPaw\Web\websocket;

return fn(Request $request) => websocket(
    request: $request,
    handler: new class implements WebsocketClientHandler {
        public function handleClient(
            WebsocketClient $client,
            Request $request,
            Response $response,
        ): void {
            $client->sendText("welcome!");

            foreach ($client as $message) {
                echo $message.PHP_EOL;
            }
        }
    }
);