Reputation: 11
Server code Console logging User connected message every second for single client connection
import express from "express"
import http from "http"
import cors from "cors"
import dotenv from "dotenv"
import movieRoute from './routes/movieRoute.js'
import ContentRoutes from "./routes/ContentRoute.js"
import userRoutes from "./routes/userRoutes.js"
import connectDB from "./config/db.js"
import axios from "axios"
const app = express()
const server = http.createServer(app)
dotenv.config()
connectDB()
const io= socketIo(server)
app.use(cors())
app.use(express.json())
io.on("connection",socket=>{
console.log("user connected")
})
app.use("/api/users",userRoutes)
app.use("/api/content",ContentRoutes)
app.use('/api/movie',movieRoute)
app.get("/",(req,res)=>{
res.send("APi is running")
})
const PORT = process.env.PORT || 5000
server.listen(PORT,console.log(`Server listening in port ${PORT}`))
React Code Match here changes only one time but myserver is console logging the message userConnected simutenously
let socket
useEffect(()=>{
socket= io("http://localhost:5000")
},[match])
Upvotes: 0
Views: 125
Reputation: 30975
Have you tried to set it only once time ?
const [socket, setSocket] = useState(null)
useEffect(()=>{
if (socket === null) {
setSocket(io("http://localhost:5000"))
}
},[match])
Upvotes: 1