3 回答

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊
經(jīng)過一番來來回回......
只需確保盡快將套接字 IO 的前端鏈接加載到頭部即可。
并將這部分包含在前端
var socket = io.connect('http://localhost:5000', { transport : ['websocket'] } );
一定要在服務(wù)器端包含這個(gè),這不會(huì)有什么壞處,除非你想阻止某些頁面進(jìn)行 CORS 訪問
app.use(cors({origin: '*'}))
接下來的 2 個(gè)步驟使一切順利。
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
}})
最后,確實(shí)是 2 臺(tái)服務(wù)器。
const server = http.listen(8080, function() {
console.log('listening on *:8080');
});
app.listen(5000, console.log("App Running on http://localhost:5000"));
我花了一段時(shí)間,但現(xiàn)在一切都一勞永逸了(我希望)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
試試這個(gè)代碼
`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貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
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
添加回答
舉報(bào)