WebSocket Connection Configuration
To configure websockets for your Oro applications, complete the following tasks:
Configure a Web Server to ensure messages interaction between the WebSocket server and the clients.
Configure WebSocket-Related Environment Variables to provide interaction URLs for clients.
Run the WebSocket Server and make sure that it is always running.
Configure a Web Server
Web server configuration for WebSocket connections depends on whether your site uses secure (HTTPS) or non-secure (HTTP) mode. This mode determines whether WebSocket connections use the secure (WSS) or the non-secure (WS) protocol.
Configure a Regular (WS) Connection
Non-secure connections require no changes to the Oro application web server configuration. However, a secure connection is strongly recommended for sites in production mode.
Configure a Secure (SSL/WSS) Connection
A secure (WSS) connection requires changes to the web server configuration, because direct backend WebSocket SSL/WSS connections are currently not supported.
To achieve a WSS connection for frontend WebSocket communication, configure an additional reverse proxy in front of the WebSocket server.
The example below shows this configuration for Nginx (the recommended web server):
server {
# This is your regular configuration for SSL connections to website
listen 443 ssl;
server_name example.com www.example.com
ssl_certificate_key /etc/ssl/private/example.com.key;
ssl_certificate /etc/ssl/private/example.com.crt.fullchain;
ssl_protocols TLSv1.2;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES2;
# ...
# ... Other website instructions here ...
# ...
# You need to add additional "location" section for Websockets requests handling
location /ws {
# redirect all traffic to localhost:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080/$is_args$args;
proxy_redirect off;
proxy_read_timeout 86400;
# enables WS support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# prevents 502 bad gateway error
proxy_buffers 8 32k;
proxy_buffer_size 64k;
reset_timedout_connection on;
error_log /var/log/nginx/oro_wss_error.log;
access_log /var/log/nginx/oro_wss_access.log;
}
# ...
error_log /var/log/nginx/oro_https_error.log;
access_log /var/log/nginx/oro_https_access.log;
}
In this configuration example, you should replace the following values:
example.com with your configured domain name.
ssl_certificate_key and ssl_certificate with the actual values of your active SSL certificate.
The ws value in the location /ws string with the value of the frontend_path option from the
ORO_WEBSOCKET_FRONTEND_DSNenvironment variable value.URL and port in the proxy_pass http://127.0.0.1:8080/ string with the actual values of the host and port defined in the
ORO_WEBSOCKET_BACKEND_DSNenvironment variables.
Run the WebSocket Server
OroSyncBundle provides the gos:websocket:server console command that runs the WebSocket server:
php bin/console gos:websocket:server
The WebSocket server must run continuously for the WebSockets functionality to work. To guarantee this, configure a supervisor to run the server and ensure its availability.
For example, install Supervisord and configure it to run the WebSocket server with the following configuration:
Logging Levels
Specify the logging level for the WebSocket server with the -v|vv|vvv option of the gos:websocket:server console command.
By default, logging levels differ between dev and prod modes.
Prod Mode Log Levels
Normal: WARNING and higher
Verbose (-v): NOTICE and higher
Very verbose (-vv): INFO and higher
Debug (-vvv): DEBUG and higher
Dev Mode Log Levels
Normal: INFO and higher
Verbose (-v): DEBUG and higher
The default output of log records is stdout.
Business Tip
Are you unsure whether your company needs B2B eCommerce? Our guide can help with the decision-making.