Skip to content

Odoo Bus Service / Longpolling Not Working — Complete Fix

DeployMonkey Team · March 22, 2026 8 min read

What Is the Odoo Bus Service?

The bus service handles real-time communication in Odoo: chat messages, notification popups, presence indicators (online/offline), live data updates, and discuss channel messages. It uses WebSocket (Odoo 16+) or long polling (older versions) on a separate port (default: 8072).

Symptoms When Bus Service Fails

  • Live Chat widget does not appear or does not receive messages
  • Notifications do not pop up in real time (need page refresh)
  • Discuss channels show no new messages until refresh
  • User presence (online/offline dots) does not update
  • Chatter messages appear only on page reload
  • Console error: Bus service unavailable

Root Cause

The bus service requires a dedicated gevent worker running on a separate port (8072). Without it, all real-time features fail silently.

Fix 1: Configure Gevent Worker

# odoo.conf
workers = 5          # Main HTTP workers
gevent_port = 8072   # Longpolling/WebSocket port

You MUST have workers > 0 for the gevent worker to start. In single-process mode (workers = 0), longpolling runs in-process but does not scale.

Fix 2: Configure Nginx Proxy

# nginx site configuration
upstream odoo-longpolling {
    server 127.0.0.1:8072;
}

# WebSocket support (Odoo 16+)
location /websocket {
    proxy_pass http://odoo-longpolling;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 86400;  # 24h for persistent connections
}

# Legacy longpolling (Odoo 15 and earlier)
location /longpolling {
    proxy_pass http://odoo-longpolling;
    proxy_read_timeout 86400;
}

Fix 3: Verify Port Is Open

# Check if gevent worker is listening
ss -tlnp | grep 8072

# If not listening, check Odoo logs for gevent startup errors
grep -i "gevent\|8072\|longpolling\|websocket" /var/log/odoo/odoo.log

Fix 4: Docker Configuration

# docker-compose.yml — expose both ports
services:
  odoo:
    ports:
      - "8069:8069"   # Main HTTP
      - "8072:8072"   # WebSocket/Longpolling

Version-Specific Notes

VersionProtocolURL Path
Odoo 14-15Long polling (HTTP)/longpolling/poll
Odoo 16+WebSocket/websocket

Odoo 16+ uses WebSocket by default. Your nginx configuration must support the WebSocket upgrade headers.

Troubleshooting Checklist

  1. Is workers > 0 in odoo.conf? (Required for gevent)
  2. Is gevent_port = 8072 set?
  3. Is port 8072 listening? (ss -tlnp | grep 8072)
  4. Is nginx proxying /websocket (v16+) or /longpolling (v15-)?
  5. Does nginx have WebSocket upgrade headers?
  6. Is proxy_read_timeout long enough? (86400 recommended)

DeployMonkey

DeployMonkey configures the bus service, gevent worker, and nginx WebSocket proxy automatically. Real-time features work out of the box on every plan.