Download the PHP package p2/ratchet-bundle without Composer
On this page you can find all versions of the php package p2/ratchet-bundle. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Informations about the package ratchet-bundle
P2RatchetBundle
Version: 1.0.6
Installation
"require": {
"p2/ratchet-bundle": "dev-master"
}
Configuration
p2_ratchet:
provider: ~ # The client provider to use, null for default
address: 0.0.0.0 # The address to receive sockets on (0.0.0.0 means receive from any)
port: 8080 # The port the socket server will listen on
Usage
- Implement the ClientInterface in your applications user model or document.
- Implement the ClientProviderInterface in your applications user provider or managing repository.
- Set the
provider
setting to the service id of your applications client provider implementation or leave blank for the default anonymous provider. - Implement the Getting started).
- Use the
{{ websocket_client(token, debug) }}
macro within your templates to enable the frontend websocket client. - Write your client side event handler scripts. See the Javascript API section for more detail.
- Open a terminal and start the server
app/console socket:server:start
. By default it will accept connection from *:8080 (see Command Line Tool)
Getting started
The ApplicationInterface acts only as an alias for symfony`s EventSubscriberInterface. Its used to detect websocket event subscribers explicitly.
Write your application as you would write a common event subscriber. The event handler methods will receive exactly one argument: a Payload for more details).
Service DI Configuration
Create a service definition for your websocket application. Tag your service definition with kernel.event_subscriber
and p2_ratchet.application
to register the application to the server.
The service definition may look like this:
Command Line Tool
Events
Event | Description |
---|---|
SOCKET_OPEN | Fired when the server received a new connection. |
SOCKET_CLOSE | Fired when the socket connection was closed. |
SOCKET_ERROR | Fired when an error occurred during transmission. |
SOCKET_MESSAGE | Fired when a message was send through a connection. |
WebSocket Events
Client:
Event | Payload | Description |
---|---|---|
socket.auth.request |
{ token } |
This event is dispatched by the javascript client directly after the socket connection was opened. Its attempt is to send the value of p2_ratchet_access_token to the server to identify the websocket client within your application. |
Server:
Event | Payload | Description |
---|---|---|
socket.auth.success |
{ client } |
Fired on a successful authentication request. The payload contains the public user data returned by ClientInterface::jsonSerialize() |
socket.auth.failure |
{ errors } |
Fired when an error occurred during the authentication process. The payload contains the errors returned. |
Hook-in Points
The bundle allows you to hook into the react event loop to add your own periodic timers. All you have to do is to create a class implementing PeriodicTimerInterface and to tag it as "p2_ratchet.periodic_timer". Then the timers will be added to the loop on server startup.
Example:
Service
Javascript API
The api represents just a simple wrapper for the native javascript WebSocket to ease developers life. It basically implements the basic communication logic with the socket server.
Simple chat application example
The application code:
The respective twig template may look like this:
All versions of ratchet-bundle with dependencies
symfony/security-bundle Version ~2.3
symfony/twig-bundle Version ~2.3
symfony/console Version ~2.3
symfony/finder Version ~2.3
symfony/yaml Version ~2.3
cboden/ratchet Version ~0.2