nekland / woketo
A WebSocket library for PHP
Installs: 3 472
Dependents: 1
Suggesters: 0
Security: 0
Stars: 46
Watchers: 10
Forks: 10
Open Issues: 12
Requires
- php: ^7.0
- nekland/tools: ^1.0 || ^2.0
- psr/log: ^1.0
- react/dns: ^0.4.6
- react/event-loop: ^1.0.0
- react/socket: ^1.0.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2021-09-20 09:58:12 UTC
README
⚠️ Due to the lack of usage (barely nobody use it), this I will not make the effort to make it compatible with PHP 8. Therefore this library is deprecated and you should not use it. ⚠️
A PHP WebSocket library. With following features:
- Server
- Client
- WSS Support (WebSocket over SSL)
- Autobahn test suite passed (WebSocket test suite reference)
- Binary/text messages supported
- Built on top of reactphp (async socket communication)
- Not dependent of any other big framework/library which mean you can use it with guzzle (any version) or Symfony (any version)
- Woketo follows semver
Requirements
- PHP 7+
How to install
# The installation is pretty much easier with composer. But you still can use it as git submodule ! composer require "nekland/woketo"
And that's all ! 🙀
How to use it
The file tests.php
is a basic echo server. That's all you need to make a websocket server with Woketo:
<?php use Your\Namespace\YourMessageHandler; use Nekland\Woketo\Server\WebSocketServer; $server = new WebSocketServer(1337); $server->setMessageHandler(new YourMessageHandler(), '/path'); // accessible on ws://127.0.0.1:1337/path $server->start(); // And that's all <3
<?php // YourMessageHandler.php namespace Your\Namespace; use Nekland\Woketo\Core\AbstractConnection; use Nekland\Woketo\Message\TextMessageHandler; class YourMessageHandler extends TextMessageHandler { public function onConnection(AbstractConnection $connection) { // Doing something when the client is connected ? // This method is totally optional. } public function onMessage(string $data, AbstractConnection $connection) { // Sending back the received data $connection->write($data); } public function onDisconnect(AbstractConnection $connection) { // Doing something when the connection between client/server is disconnecting // Optionnal } }
How to test
Unit tests suite
git clone git@github.com:Nekland/Woketo
cd Woketo
composer install
./bin/phpunit
Functionnal tests suite
Server test suite
php tests/echo-server.php wstest -m fuzzingclient
Client test suite
wstest -m fuzzingserver php tests/client_autobahn.php
wstest is the Autobahn test tool. You can install it with
sudo pip install autobahntestsuite
.You can read more about the installation of Autobahn on their documentation.
How to something else?
- How to learn more about Woketo usage? RTFM!
- How to get information about how it works internally? Read the docs/dev.md page of doc.
- How to contribute? Read the CONTRIBUTING.md page of doc.
- How to get support? Use Gitter, the issue tracker is not a forum.
What's next?
You can see what's planned for next versions in the github milestones.
What Woketo does not do?
Currently there is no support of the following:
- WebSocket extensions, currently not supported but will probably be in the future
- WAMP implementation will probably never be done by Woketo itself as it's a layer on top of WebSockets. This includes JSON-RPC and other layers up to WebSockets.
Thanks
Thank you to all code contributors (Hello folliked =)). And to any code reviewer (Hi valanz).
<3