Question

Connection to nodejs (express) refused

Hello everyone,

I’m a long term programmer, but haven’t used nodejs much in my code. Now I need to use it in my current code and I’ve ran into a problem that I can’t seem to figure out myself, I have googled a lot but nothing seem to fix it.

I am trying to get my website to connect to the nodejs server running on same host.

If I visit the url in my browser, it works fine (http://localhost:6857/socket.io/?EIO=4&transport=polling) and I see this respond

0{"sid":"s_v860SbNO4toknPAAAA","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":20000}

But when I try to connect thru the website, I just get

GET http://localhost:6857/socket.io/?EIO=3&transport=polling&t=N_gL_HZ net::ERR_CONNECTION_REFUSED

This is my server.js

// use express
var express = require("express");
 
// create instance of express
var app = express();


 
// use http with instance of express
var http = require("http").createServer(app);

// start the server
var port = 6857;
http.listen(port, '0.0.0.0', function () {
    console.log("Listening to port " + port);
});

// create socket instance with http
var io = require("socket.io")(http);

// add listener for new connection
io.on("connection", function (socket) {
    // this is socket for each user
    console.log("User connected", socket.id);
});

io.on("connect_error", (err) => {
  console.log(`connect_error due to ${err.message}`);
});

And this is my JS code inside my website

<script>
    var server = "http://localhost:6857/";
    var io = io(server);
</script>

Can someone guide my in the right direction for how to fix this, so I can begin using nodejs inside my website?

Subscribe
Share

The same is if I visit http://localhost:6857/socket.io/socket.io.js int he browser, then I can fine reveive it, however if I use <script src="http://localhost:6857/socket.io/socket.io.js"></script> then it can’t be found.


Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Hello,

Rather than using localhost try with the server IP so that your frontend could connect to the backend service on the server. Otherwise the fronted would try to connect to your PC rather than the localhost on the server.

Let me know how it goes!

Also you could install Nginx and use it as a reverse proxy so that you don’t have to specify the 6857 port each time, here is a quick video that shows you how to do that:

Best,

Bobby

Socket IO requires you to explicitly enable CORS. See: socket.io/docs/v4/handling-cors

This comment has been deleted