1
Hello!
I have an api with the following example code:
const app = require('express')()
const http = require('http').Server(app)
const io = require('socket.io')(http)
const cors = require('cors')
app.use(cors())
app.get('/', (req, res)=>{
    io.emit('teste', {status: true})
    res.send('socket.io')
})
app.get('/socket.io', (req, res)=>{
    res.send(req.params)
})
app.post('/socket.io', (req, res)=>{
    res.send(req.body)
})
io.on('connection', socket => {
    console.log('concted');
    socket.on('connect', data =>{
        io.emit('teste', true)
    })
    socket.on('teste', teste =>{
        socket.emit('teste', teste)
    })
})
app.listen(4000, ()=>{
    console.log('listen on 4000');
})
I’m using as dependency:
"cors": "^2.8.5",
"express": "^4.17.1",
"socket.io": "^3.0.4"
<html>
    <head>
        <title>Document</title>
    </head>
    <body>    
        <script src="socket.js"></script>    
        <script>
            var socket = io('http://localhost:4000')
            socket.on('teste', data =>{
                console.log('test');
            })
        </script>
</body>
</html>
The javascript content I copied from here
When accessing the page does not appear that connected
In api, change Listen to
http.listen(4000, ()=> {
})
While trying to access through the html page, I have this result in the console
I have Cors problem
Access to XMLHttpRequest at 'http://localhost:4000/socket.io/?EIO=4&transport=polling&t=NQCAgmT' from origin 'http://localhost' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
I’ve tried so many ways
/*
var whitelist = ['http://localhost']
const options = (req, callback) =>{
  var corsOptions;
  if (whitelist.indexOf(req.header('Origin')) !== -1) {
    corsOptions = { origin: true } // reflect (enable) the requested origin in the CORS response
  } else {
    corsOptions = { origin: false } // disable CORS for this request
  }
  callback(null, corsOptions) // callback expects two parameters: error and options
}*/
var corsOptions = {
    origin: '*',
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 
  }
  app.use(cors(corsOptions));
//app.use(cors(options))
app.use((req, res, next) =>{
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });
						
I think the protocol should be
ws://and nothttp://, can be wrong never used thesocket.iospecifically.– Icaro Martins
also does not connect
– adventistaam
About the error presented CORS I saw that you are using
app.use(cors())but he keeps complaining that it’s not allowed, that’s a related question that might help: CORS on Nodejs without the use of Frameworks– Icaro Martins
I believe that it is not return and yes, the frontend to have access to the back
– adventistaam