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

v0.1.0 2025-12-18 05:29 UTC

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