Shared data model, serialization, and middleware pipeline for RPC over WebSocket

Maintainers

Package info

github.com/php-websocket-rpc/rpc

Issues

pkg:composer/php-websocket-rpc/rpc

Statistics

Installs: 0

Dependents: 2

Suggesters: 0

Stars: 0

dev-main 2026-05-20 04:00 UTC

This package is auto-updated.

Last update: 2026-05-20 05:44:11 UTC


README

Shared data model, serialization, middleware pipeline, and contract system for RPC over WebSocket.

This is the foundation library — both rpc-client and rpc-server depend on it.

Install

composer require php-websocket-rpc/rpc

Requires PHP 8.5+ and the msgpack extension.

Features

  • Payload model — base class and kind interfaces (request, response, notification, stream open/close/data)
  • Contract systemContractInvocation, ContractResponse, ContractStreamInvocation, ContractStreamValue, ContractStreamClose, ContractPublish
  • PHP Attributes#[RpcSubscribe], #[RpcStream], #[RpcPublish] for declaring RPC patterns directly on interfaces
  • SerializationContractSerializer encodes/decodes values for wire transmission using [FQCN, props] format
  • Middleware pipelineMiddlewarePipeline for chaining request/response processors
  • Stream interfacesStreamChannelAware, StreamSubscribable for streaming and pub/sub

Key Classes

Class Purpose
PhpWebsocketRpc\Rpc\Payload\Payload Base class for all wire payloads
PhpWebsocketRpc\Rpc\Serialization\Serializer Msgpack serialization
PhpWebsocketRpc\Rpc\Contract\ContractSerializer Object encoding/decoding for contract data
PhpWebsocketRpc\Rpc\Contract\Attribute\RpcSubscribe Mark a method as subscribe pattern
PhpWebsocketRpc\Rpc\Contract\Attribute\RpcStream Mark a method as stream pattern
PhpWebsocketRpc\Rpc\Contract\Attribute\RpcPublish Mark a method as publish pattern
PhpWebsocketRpc\Rpc\Middleware\MiddlewarePipeline Middleware chain