Node Socket.io works only on localhost but not on domain

39 Views Asked by At

This is Node.js server code.

Server.js

const express = require("express");
const cors = require("cors");
const http = require("http");
const SocketServer = require("./config/socket");
require('dotenv').config();

const corsOptions = {
    origin: "*",
    credentials: true,
};

const app = express();
app.use(cors(corsOptions));
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
const server = http.createServer(app);
const io = SocketServer(server);

app.use((req, res, next) => {
    req.body.io = io;
    next();
});

const port = process.env.PORT || 5000;

server.listen(port, () => {
    console.log(`Sever running on port ${port}`);
})

.config/socket.js

const socketIO = require("socket.io");

const SocketServer = (server) => {
    const io = socketIO(server, {
        cors: {
            orgin: "*",
            methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
            preflightContinue: false,
            optionSuccessStatus: 204,
        },
    });

    io.on("connection", (socket) => {
        console.log(`Socket ${socket.id} connected`);

        socket.on("disconnect", () => {
            console.log(`Socket ${socket.id} disconnected`);
        });
    });
    return io;
};

module.exports= SocketServer

This is React.js client code

import { io } from "socket.io-client";

React.useEffect(() => {
      const socket = io(`${process.env.REACT_APP_BACKEND_URL}`, {
        transports: ['websocket']
      });

      socket.on('send', (data) => {
    
      })

      socket.on('buy', (data) => {

      })
      return () => {
        socket.disconnect();
      };
  }, []);

In case of localhost, REACT_APP_BACKEND_URL = http://localhost:5000, the socket.io works well. But In case of domain, REACT_APP_BACKEND_URL = https://abcd.com (ex), the socket.io doesn't work

websocket.js:43 WebSocket connection to 'wss://abcd.com/socket.io/?EIO=4&transport=websocket' failed: WebSocket opening handshake timed out

Please help me to fix the issue.

Thanks

0

There are 0 best solutions below