Installation
Socket Conveyor is a Composer package that runs a long-lived OpenSwoole WebSocket server.
Choose a setup
For a packaged Pusher/Reverb-compatible server, use the Docker setup below. Docker supplies PHP, OpenSwoole and Conveyor together. For native Conveyor mode or your own PHP entrypoint, follow the PHP package setup and native Quick Start.
Run with Docker
The project-maintained image is lotharthesavior/socket-conveyor. Version 2.6.1 bundles PHP 8.5.12, OpenSwoole 26.2.0 with OpenSSL support, and Conveyor’s production dependencies. You do not need PHP, Composer or OpenSwoole installed on your host for this server.
Docker prerequisites
- Install and start Docker Engine or Docker Desktop with Linux containers. The published image supports Linux
amd64andarm64, including Intel and Apple Silicon Docker Desktop. - Have network access to pull the image and an available local port
8080. - Prepare an app ID, key and secret. For Laravel, use the same values as
REVERB_APP_ID,REVERB_APP_KEYandREVERB_APP_SECRET. Keep the secret server-side.
Confirm that the Docker daemon is reachable:
docker versionIn a POSIX shell, export your existing credentials as PUSHER_APP_ID, PUSHER_APP_KEY and PUSHER_APP_SECRET. Then run:
docker run --rm --init -p 127.0.0.1:8080:8080 \
-e PUSHER_APP_ID -e PUSHER_APP_KEY -e PUSHER_APP_SECRET \
lotharthesavior/socket-conveyor:2.6.1Alternatively, replace the three -e options with --env-file /path/to/conveyor.env, using a dedicated file containing those three variables. All three are required; the launcher exits with a missing-variable error if one is empty. Keep that file out of version control.
The server runs in the foreground; press Ctrl+C to stop and remove the container. It listens on 0.0.0.0:8080 inside the container and is published only at 127.0.0.1:8080 on your host. If that host port is busy, change the first 8080 in the mapping and update your clients to match.
Connect your application
This launcher uses Pusher/Reverb-compatible mode, with presence and client messages enabled. Connect Pusher clients at ws://127.0.0.1:8080/app/YOUR_APP_KEY. For Laravel running on the host, set REVERB_HOST=127.0.0.1, REVERB_PORT=8080 and REVERB_SCHEME=http, with the matching app credentials. Follow the Laravel Echo / Reverb guide for browser configuration and Laravel channel authorization, using port 8080 in place of its example port.
Between containers on a shared Docker network, use the Conveyor service or container name and internal port 8080; localhost refers to each container itself. For public access, configure a TLS reverse proxy and use a wss:// browser endpoint.
The native Quick Start uses a different protocol and a custom PHP entrypoint on port 8989. Its native client messages do not apply to this image’s default launcher. See the upstream Docker guide for building from source or supplying a custom entrypoint.
Use the full 2.6.1 release tag shown here. Upstream also documents moving 2.6, 2 and latest tags; review and retest updates before adopting them.
PHP package requirements
- A host and port the WebSocket server can bind to.
- The default Conveyor server host is
0.0.0.0. - Examples use port
8989for native Conveyor mode and8990for Pusher/Reverb-compatible mode.
Tested-version status
The PHP package requirements above are minimum requirements, not a tested compatibility matrix. The Docker check below covers one packaged runtime.
- Docker runtime check (6 November 2026): image
2.6.1reported PHP8.5.12and OpenSwoole26.2.0. Its source label identifies commitce077686c8fca1a902bc2092a8f69fed5f967dfe. The published manifest lists amd64 and arm64; execution was checked on the local Docker host only. - Docker smoke test: the documented credential forwarding and localhost port mapping delivered a signed REST broadcast to a subscribed WebSocket client. The upstream smoke script also passed custom-port, invalid-configuration and graceful-shutdown checks. Container health alone checks TCP liveness, not message delivery.
- Laravel, Laravel Echo and pusher-js: exact tested versions have not been recorded in this handoff.
Before relying on an integration, verify your installed combination. Record the PHP and OpenSwoole versions, the Conveyor release or commit, and the resolved Laravel, Echo and pusher-js versions alongside the smoke-test result. No additional version compatibility is claimed here.
Install the package
The current published server package remains kanata-php/socket-conveyor while its new namespace is prepared:
composer require kanata-php/socket-conveyorThe prepared package name is firebrikdotcom/socket-conveyor. Packagist registration is pending; this install command is not available yet. See migration guidance for previous installations. The existing Docker image above is unchanged.
# Planned package name; registration pending
composer require firebrikdotcom/socket-conveyorAfter package registration and cross-package dependency resolution are complete, local development inside the Socket Conveyor repository uses:
composer installVerify OpenSwoole
Confirm the PHP binary that runs the server has OpenSwoole enabled:
php -m | grep openswooleIf Composer reports ext-openswoole as missing, install and enable the extension for that same PHP binary.
Next step
For companion packages, runtime requirements and planned versions, see the ecosystem overview.