phrity / websocket
WebSocket client and server
3.8.1
2026-08-15 14:09 UTC
Requires
- php: ^8.1
- nyholm/psr7: ^1.4
- phrity/http: ^1.1
- phrity/net-stream: ^2.4
- phrity/net-uri: ^2.1
- psr/http-factory: ^1.0
- psr/http-message: ^1.1 || ^2.0
- psr/log: ^1.0 || ^2.0 || ^3.0
Requires (Dev)
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.0 || ^11.0 || ^12.0 || ^13.0
- phrity/logger-console: ^1.0
- phrity/net-mock: ^2.4
- phrity/util-errorhandler: ^1.1
- robiningelbrecht/phpunit-coverage-tools: ^1.9
- squizlabs/php_codesniffer: ^4.0
This package is auto-updated.
Last update: 2026-08-16 13:41:10 UTC
README
Websocket Client and Server for PHP
This library contains WebSocket client and server for PHP.
The client and server provides methods for reading and writing to WebSocket streams.
This repo replaces the abandoned textalk/websocket repo
and is maintained by Sören Jensen, who has been maintaining the original since v1.3.
Some features
- Client and multi-connection Server
ws(TCP) andwss(SSL) support- Listener callbacks on incoming messages and other events
- Close and Ping/Pong handling (standard middlewares)
- Deflate compression (optional middleware)
- Additional optional middlewares and ability to create own middlewares
- Support message fragmentation and payload masking
- Support custom opcode messages
Documentation
- Documentation
- Client - The WebSocket client
- Server - The WebSocket server
- Changelog - The changelog of this repo
- Contributing - Contributors and requirements
- Examples - Examples
Migration
Installing
Preferred way to install is with Composer.
composer require phrity/websocket
Client
The client can read and write on a WebSocket stream.
Set up a WebSocket Client for continuous subscription
$client = new WebSocket\Client("wss://echo.websocket.org/"); $client // Add standard middlewares ->addMiddleware(new WebSocket\Middleware\CloseHandler()) ->addMiddleware(new WebSocket\Middleware\PingResponder()) // Listen to incoming Text messages ->onText(function (WebSocket\Client $client, WebSocket\Connection $connection, WebSocket\Message\Message $message) { // Act on incoming message echo "Got message: {$message->getContent()} \n"; // Possibly respond to server $client->text("I got your your message"); }) ->start();
Set up a WebSocket Client for request/response strategy.
$client = new WebSocket\Client("wss://echo.websocket.org/"); $client // Add standard middlewares ->addMiddleware(new WebSocket\Middleware\CloseHandler()) ->addMiddleware(new WebSocket\Middleware\PingResponder()) ; // Send a message $client->text("Hello WebSocket.org!"); // Read response (this is blocking) $message = $client->receive(); echo "Got message: {$message->getContent()} \n"; // Close connection $client->close();
Server
The server is a multi connection, listening server.
Set up a WebSocket Server for continuous listening
$server = new WebSocket\Server(); $server // Add standard middlewares ->addMiddleware(new WebSocket\Middleware\CloseHandler()) ->addMiddleware(new WebSocket\Middleware\PingResponder()) // Listen to incoming Text messages ->onText(function (WebSocket\Server $server, WebSocket\Connection $connection, WebSocket\Message\Message $message) { // Act on incoming message echo "Got message: {$message->getContent()} \n"; // Possibly respond to client $connection->text("I got your your message"); }) ->start();
