Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A simple PHP WebSocket implementation for PHP 5.3

branch: master

This branch is 0 commits ahead and 0 commits behind master

Octocat-spinner-32 doc Updated API documentation December 28, 2012
Octocat-spinner-32 examples Clean up code style December 13, 2012
Octocat-spinner-32 lib Test request parsing December 28, 2012
Octocat-spinner-32 .gitignore Added sphinx documentation July 29, 2012
Octocat-spinner-32 .travis Make travis test runner executable July 26, 2012
Octocat-spinner-32 .travis.yml Do build log output better July 26, 2012
Octocat-spinner-32 Updated documentation July 08, 2012
Octocat-spinner-32 LICENSE Added newline at eof June 08, 2012
Octocat-spinner-32 Updated version December 28, 2012
Octocat-spinner-32 Work in progress on 2.0 June 17, 2012
Octocat-spinner-32 VERSION Updated version December 28, 2012
Octocat-spinner-32 composer.json Backported new composer.json June 30, 2012
Octocat-spinner-32 phpunit.xml Made testing a bit quieter July 26, 2012


Simple WebSocket Client/Server for PHP

Formerly known as php-websocket

A simple websocket server and client package for PHP 5.3/5.4, using streams. Protocol support is based around RFC 6455, targeting the latest stable versions of Chrome and Firefox. (Suggest other clients here)

Backward compatibility

Public API

The new vendor namespace is Wrench. This namespace begins in the /lib directory, rather than server/lib.

Apart from the new namespace, the public API of this new major version is fairly compatible with that of php-websocket 1.0.0.

Protected API

The protected API has changed, a lot. Many method have been broken up into simple protected methods. This makes the Server class much easier to extend. In fact, almost all of the classes involved in your typical daemon can now be replaced or extended, including the socket handling and protocol handling.

What happened to the client dir?

The client-side libraries are no longer supported: some libraries are included but are packaged only as examples. You're free to use whatever client-side libraries you'd like with the server. If you're still using them, see the 1.0 branch.


The library is PSR-0 compatible, with a vendor name of Wrench. An SplClassLoader is bundled for convenience.


This creates a server on with one Application that listens for WebSocket requests to ws://localhost:8000/echo and ws://localhost:8000/chat:

$server = new \Wrench\BasicServer('ws://localhost:8000', array(
    'allowed_origins' => array(
$server->registerApplication('echo', new \Wrench\Examples\EchoApplication());
$server->registerApplication('chat', new \My\ChatApplication());


The original maintainer and author was @nicokaiser. Plentiful improvements were contributed by @lemmingzshadow and @mazhack. Parts of the Socket class were written by Moritz Wutz. The server is licensed under the WTFPL, a free software compatible license.


  • Add tests around fragmented payloads (split into many frames).
  • To report issues, see the issue tracker.


  • See server.php in the examples directory and Wrench\Application\EchoApplication
  •, a Twitter API sample project.
  • For Symfony2, VarspoolWebsocketBundle extends this library for use with the Service Container.
Something went wrong with that request. Please try again.