Socket.IO `net::ERR_CONNECTION_REFUSED` in Production Setup (Local IP)

Hello everyone,

I’ve set up Frappe in production mode on an Ubuntu machine using a local IP (http://10.52.10.200). I’m not using Docker or any domain/SSL setup—just plain local IP access.

On the CRM module (installed from Frappe CRM), I’m getting the following error in the browser console:

GET https://10.52.10.200/socket.io/?EIO=4&transport=polling  net::ERR_CONNECTION_REFUSED

This repeats several times as Socket.IO keeps trying to connect. I’ve confirmed that:

  • The Frappe site is accessible normally via the browser.
  • The error appears to be from failing WebSocket or polling connections.
  • Port 9000 (Socket.IO) is not being handled or is being refused.

I believe this may be related to how Socket.IO (frappe-socketio) is not being served properly. I’m not using Nginx or Apache reverse proxy yet — just direct access via IP on port 80.

Can someone guide me on how to:

  1. Properly configure Socket.IO for production without a domain or HTTPS?
  2. Ensure all real-time features work over local network/IP?

Any help is appreciated. Thank you!