snapflowio / websocket
A simple and lightweight library for building Websocket servers.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/snapflowio/websocket
Requires
- php: >=8.4
- workerman/workerman: ^5.1
Requires (Dev)
- laravel/pint: *
- phpstan/phpstan: ^2.1
- swoole/ide-helper: ^6.0
- textalk/websocket: ^1.6
This package is not auto-updated.
Last update: 2025-12-19 03:38:49 UTC
README
A simple and lightweight library for building Websocket servers.
Installation
composer require snapflowio/websocket
Quick Start
Server Example
<?php use Snapflow\Websocket\Server\Server; use Snapflow\Websocket\Server\ServerConfig; use Snapflow\Websocket\Server\Adapter\SwooleAdapter; $config = new ServerConfig( host: '0.0.0.0', port: 9501, workerNumber: 4 ); $server = new Server(new SwooleAdapter($config)); $server ->onStart(fn() => echo "Server started on 0.0.0.0:9501\n") ->onOpen(fn(int $fd) => echo "Client #{$fd} connected\n") ->onMessage(function (int $fd, string $data) use ($server) { echo "Received: {$data}\n"; $server->send([$fd], "Echo: {$data}"); }) ->onClose(fn(int $fd) => echo "Client #{$fd} disconnected\n"); $server->start();
Client Example
<?php use Snapflow\Websocket\Client\Client; use Snapflow\Websocket\Client\ClientConfig; go(function () { $config = new ClientConfig(url: 'ws://127.0.0.1:9501'); $client = new Client($config); $client ->onOpen(fn() => echo "Connected!\n") ->onMessage(fn(string $data) => echo "Received: {$data}\n") ->onClose(fn() => echo "Disconnected\n"); $client->connect(); $client->send('Hello, Server!'); $client->listen(); });
License
This library is available under the MIT License.
Copyright
Copyright (c) 2025 Snapflow