Skip to content

sirn-se/websocket-php

Repository files navigation

Phrity Websocket

Websocket Client and Server for PHP

Build Status Coverage Status

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) and wss (SSL) support
  • Listener callbacks on incoming messages and other events
  • Close and Ping/Pong handling (standard middlewares)
  • Deflate compression (middleware)
  • Additional optional middlewares and ability to create own middlewares
  • Support message fragmentation and payload masking

Documentation

Installing

Preferred way to install is with Composer.

composer require phrity/websocket

Client

The client can read and write on a WebSocket stream. It internally supports Upgrade handshake and implicit close and ping/pong operations.

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();

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();

Server

The server is a multi connection, listening server. It internally supports Upgrade handshake and implicit close and ping/pong operations.

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();

License

ISC License

About

[php-lib] WebSocket client and server in PHP

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 32