我在 server.js 中有这个
//socket io config
const server = require('http').createServer(app)
const io = require('socket.io')(server)
io.on('connection', function (socket) {
socket.on('SOCKET_COMMENT_RECEIVED', ({ notification }) => {
io.emit(`SOCKET_COMMENT_RECEIVED`, notification)
})
//and many more
})
在我的客户中( react )
import io from 'socket.io-client'
const socket = io('localhost:3001') // working in localhost
在我的产品中我做这个检查
let socket = io('localhost:3001')
if(process.env.NODE_ENV === 'production') { socket =
io('https://api.example.com:3001')
}
为什么会这样?我不认为这是 cors 问题,因为我已经这样做了
app.use(cors({
origin: true,
credentials: true
}))
我的 package.json deps
"socket.io": "^2.1.1",
"socket.io-client": "^2.1.1",
最佳答案
在您的服务器代码中,请添加以下行
io.set('origins', '*:*');
所以你的代码将是
//socket io config
const server = require('http').createServer(app)
const io = require('socket.io')(server)
io.set('origins', '*:*');
io.on('connection', function (socket) {
socket.on('SOCKET_COMMENT_RECEIVED', ({ notification }) => {
io.emit(`SOCKET_COMMENT_RECEIVED`, notification)
})
//and many more
})
如需更多帮助,请关注 this 教程和 this 问题。
源代码可用 here 。
希望能帮到你 !!
关于node.js - socket.io 连接在生产中失败,在本地主机上工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52378299/