3 回答
TA贡献1795条经验 获得超7个赞
经过一番来来回回......
只需确保尽快将套接字 IO 的前端链接加载到头部即可。
并将这部分包含在前端
var socket = io.connect('http://localhost:5000', { transport : ['websocket'] } );
一定要在服务器端包含这个,这不会有什么坏处,除非你想阻止某些页面进行 CORS 访问
app.use(cors({origin: '*'}))
接下来的 2 个步骤使一切顺利。
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http,
{
cors: {
origin: "http://localhost:5000 {this is the port of your back end app, not for the socket IO port }",
credentials: true
}})
最后,确实是 2 台服务器。
const server = http.listen(8080, function() {
console.log('listening on *:8080');
});
app.listen(5000, console.log("App Running on http://localhost:5000"));
我花了一段时间,但现在一切都一劳永逸了(我希望)
TA贡献1865条经验 获得超7个赞
试试这个代码
`const server = app.listen(PORT,()=>console.log(`listening on port ${PORT}`));
io = require('socket.io').listen(server);
io.on('connection', (socket) => {
console.log('a user connected');
});`
TA贡献1827条经验 获得超7个赞
app.use((req,res, next)=>{
res.setHeader('Access-Control-Allow-Origin',"http://localhost:3000");
res.setHeader('Access-Control-Allow-Headers',"*");
res.header('Access-Control-Allow-Credentials', true);
next();
});
使用此代码并安装较旧的 socket.io 版本 2.3.0
添加回答
举报