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條經驗 獲得超8個贊
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
添加回答
舉報