Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
Socket.io is working on localhost but not working after deploying heroku?

Here is the code of my socket server

const io = require("socket.io")(8080, {
cors: {
  // origin: "http://localhost:3000", 
     origin: "https://mern-bubble.herokuapp.com",
    }, 
});

and herer is my client side code

useEffect(() => {
   // socket.current = io("ws://localhost:8800");
      socket.current = io("ws://mern-bubble.herokuapp.com:8800");

       socket.current.on("getUser", (data) => {
       console.log("data from socket", data);
       dispatch(updateUserInfo(data));
    });
 }, [dispatch]);

It works completely fine when i am working on localhost, But when i deploy my project on heroku, socket.io is not responding anything ?

about 4 years ago · Santiago Gelvez
3 answers
Answer question

0

So I think that port 8800 isn't open on heroku. You should stick to port 3000 and try again. https://devcenter.heroku.com/articles/node-websockets#option-2-socket-io

about 4 years ago · Santiago Gelvez Report

0

Heroku's port are dynamically assigned when starting a Dyno. Instead of hard coding the port 8800, use the environment variable $PORT instead.

about 4 years ago · Santiago Gelvez Report

0

First make sure you have entered the command:

heroku features:enable http-session-affinity

I was stuck on a similar problem when I had everything correct for days, I just needed to enable it on cli. Reference - https://devcenter.heroku.com/articles/node-websockets

On client side, you should enter the url of the site with https:// (conditionally depending on current window location or node_env value):

 const newSocket = io('https://my-app.herokuapp.com',
  { transports: ["websocket"] }
  );

On server side my MERN app worked by having a single server with a port of 5050 and not having to set anything in particular for the socket server:

  import { Server } from "socket.io";
  const server = http.createServer(app)
  export const io = new Server(server, {
      cors: {
        origin: 'https://my-app.herokuapp.com',
        methods: ["GET", "POST"],
        // allowedHeaders: ["my-custom-header"],
        credentials: true
      }
    })

If it works locally and all your urls are correct, try to enter the command mentioned above or look at the heroku node websocket documents.

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!