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 to
With 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:server
If 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: 12345
Congratulations, your websocket server is now running. However, you will still need to add integrations to your application to fully use the bundle.