chrome-php / wrench
A simple PHP WebSocket implementation
Installs: 1 773 009
Dependents: 3
Suggesters: 0
Security: 0
Stars: 55
Watchers: 5
Forks: 210
Open Issues: 0
Requires
- php: ^7.4.15 || ^8.0.2
- ext-sockets: *
- psr/log: ^1.1 || ^2.0 || ^3.0
- symfony/polyfill-php80: ^1.26
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8.2
- phpunit/phpunit: ^9.6.3 || ^10.0.12
Conflicts
README
A simple PHP WebSocket implementation.
Installation
The library can be installed with Composer and is available on Packagist under chrome-php/chrome:
$ composer require chrome-php/wrench
PHP 7.4-8.4 are currently supported, only.
Usage
This creates a server on 127.0.0.1:8000 with one Application that listens for
WebSocket requests to ws://localhost:8000/echo
and ws://localhost:8000/chat
:
Server
// An example application, that just echoes the received // data back to the connection that sent it $app = new class implements \Wrench\Application\DataHandlerInterface { public function onData(string $data, \Wrench\Connection $connection): void { $connection->send($data); } }; // A websocket server, listening on port 8000 $server = new \Wrench\BasicServer('ws://localhost:8000', [ 'allowed_origins' => [ 'mysite.com', 'mysite.dev.localdomain' ], ]); $server->registerApplication('echo', $app); $server->registerApplication('chat', new \My\ChatApplication()); $server->setLogger($monolog); // PSR3 $server->run();
Client
// A client side example, that sends a string and will receive // the data back to the connection that sent it $client = new Client('ws://localhost:8000', 'http://localhost:8000'); $client->connect(); $client->sendData('hello'); $response = $client->receive()[0]->getPayload(); $client->disconnect();
Contributing
See CONTRIBUTING.md for contribution details.
License
This project is licensed under the The MIT License (MIT).