`
Some of the connections are ok but the others aren't
Server:
- server configuration
import cors from "cors";
import "dotenv/config";
import express from "express";
import router from "./Routers/index.js";
import connect from "./config/mongoose.js";
import cronjob from "./cronjob/index.js";
import { initSocket } from "./listener/socket.js";
const app = express();
const PORT = process.env.port || 4000;
// const httpServer = createServer(app);
connect();
app.use(express.urlencoded({ extended: true }));
app.use(express.json());
const corOption = {
origin: "*",
methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
preflightContinue: false,
optionsSuccessStatus: 204,
};
app.use(cors(corOption));
app.use("/api", router);
const server = app.listen(PORT, () => {
console.log(`Server is running on port: http://localhost:${PORT}`);
});
initSocket(server, app);
cronjob();
- socket configuration
import SocketListener from "../SocketRouters/index.js";
import { Server } from "socket.io";
export const initSocket = (server, app) => {
try {
const io = new Server(server, {
cors: {
origin: "*",
},
});
app.set("socket_io", io);
io.on("connection", async (socket) => {
console.log("Server is connected with socket ", socket.id);
SocketListener(socket, io);
socket.on("disconnect", async (message) => {
await disconnect(socket, io);
});
});
} catch (err) {
console.log(err);
}
};
-
Client:
import { useEffect } from “react”; import Socket from “../socket”;
const useSocket = (listener, deps, disconnect = false) => { useEffect(() => { const socket = Socket.getInstant();
if (socket) {
listener && listener(socket);
}return () => {
if (disconnect && socket) {
socket.disconnect();
}
};
}, […(deps ?? [])]);return null; };
export default useSocket;
That were all of my socket configuration at both client-side and server-side, are there any mistakes about them ? Or the problem is from Vercel nginx ? I also have check that the socket connection which are connected just have default ping (25000ms) and pong (20000ms) so it is less than the value of nginx's proxy_read_timeout (60 seconds by default) `
SteveWayne is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.