Socket.IO 版本 -4.4.1
服務器
const express = require("express");
const app = express();
const http = require("http");
const server = http.createServer(app);
const { Server } = require("socket.io");
const cors = require("cors");
const io = new Server(server, {
cors,
});
const PORT = 3000;
app.use(cors());
io.on("connection", (socket) => {
console.log("A user connected :)");
socket.on("msg", console.log);
socket.on("connect_error", (err) => {
console.log(`connect_error due to ${err.message}`);
});
});
server.listen(PORT, () => {
console.log("listening on *:" PORT);
});
HTML
體內
<script
src="https://cdn.socket.io/4.4.1/socket.io.min.js"
></script>
<script>
// socket.io
console.log("Connecting..")
const socket = io("http://localhost:3000")
socket.on("connect", () => {
console.log(socket.connected); // true
});
</script>
客戶端或服務器上都沒有錯誤,但我仍然無法連接到服務器。
uj5u.com熱心網友回復:
如果你改變這個:
const io = new Server(server, {
cors,
});
對此:
const io = new Server(server);
然后,您的代碼開始為我作業。因此,您嘗試將 cors 與 socket.io 一起使用的方式有問題。僅供參考,如果您將客戶端更改為始終使用 webSocket 作為傳輸,那么您的 socket.io 連接將不需要 CORS,因為 websocket 連接不受同源限制。
const socket = io("http://localhost:3000", {transports: ["websocket"]});
默認情況下,socket.io 連接以 http 輪詢(受同源限制)開始,然后在幾次 http 請求后切換到 websocket。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/440654.html
