GosWebSocketBundle is a Symfony bundle designed to bring together websocket functionality in a easy to use application architecture.
Much like Socket.IO, it provides both a server and client implementation ensuring you have to write as little as possible to get your application up and running.
Powered By Ratchet and Autobahn JS, with Symfony
| Version | Status | Symfony Versions | Documentation |
|---|---|---|---|
| 1.x | No Longer Supported | 2.3-2.8, 3.0-3.4, 4.0-4.4 | View Docs |
| 2.x | No Longer Supported | 3.4, 4.4 | View Docs |
| 3.x | Actively Supported | 4.4, 5.1-5.2 | View Docs |
Websockets are very helpful for applications which require live activity and updates, including:
- Chat applications
- Real time notifications
- Browser games
- PHP Websocket server (IO / WAMP)
- PHP Websocket client (IO / WAMP)
- JavaScript Websocket client (IO / WAMP)
- PubSub Router
- Remote Procedure Calls
- User authentication
- Periodic calls
- Origin checker
- Push (amqp)
- Installation Instructions
- Client Setup
- RPC Handlers
- PubSub Topic Handlers
- Periodic Services
- Session Management & User authentication
- Server Events
- Configuration Reference
- Performance Bench
- Push integration
- SSL configuration
- Websocket Client
- If you are using Symfony 3.3 or older, you will need the 1.x version of this bundle
- If you are using Symfony 3.4 or 4.4, you should use the 2.x version of this bundle (note Symfony 4.0 thru 4.3 are no longer supported)
- If you are using Symfony 4.4 or 5.0, you should use the 3.x version of this bundle
composer require gos/web-socket-bundle
If your application is based on the Symfony Standard structure, you will need to add the bundle and its dependency, the GosPubSubRouterBundle, to your AppKernel class' registerBundles() method.
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = [
// ...
new Gos\Bundle\PubSubRouterBundle\GosPubSubRouterBundle(),
new Gos\Bundle\WebSocketBundle\GosWebSocketBundle(),
];
// ...
}
// ...
}If your application is based on the Symfony Flex structure, the bundle should be automatically registered, otherwise you will need to add it and its dependency, the GosPubSubRouterBundle, to your config/bundles.php file.
<?php
return [
// ...
Gos\Bundle\PubSubRouterBundle\GosPubSubRouterBundle::class => ['all' => true],
Gos\Bundle\WebSocketBundle\GosWebSocketBundle::class => ['all' => true],
];The following is the minimum configuration necessary to use the bundle. If you are using the Symfony Standard structure, this will be added to your app/config/config.yml file. If you are using the Symfony Flex structure, this will be added to your config/packages/gos_web_socket.yaml file.
gos_web_socket:
server:
port: 8080 # The port the socket server will listen on
host: 127.0.0.1 # The host ip to bind toWith the bundle installed and configured, you can now launch the websocket server through your Symfony application's command-line console.
php bin/console gos:websocket:serverIf everything is successful, you will see something similar to the following:
INFO [websocket] Starting web socket
INFO [websocket] Launching Ratchet on 127.0.0.1:8080 PID: 12345Congratulations, your websocket server is now running. However, you will still need to add integrations to your application to fully use the bundle.