我正在嘗試使用以下服務器端代碼連接到 socket.io 客戶端...
const express = require("express");
const { createServer } = require("HTTP");
const { Server } = require("socket.io");
const app = express();
const httpServer = createServer(app);
const io = new Server(httpServer);
io.on("connection", (socket) => {
console.log("New user connected");
socket.on("join_room", (room) => {
socket.join(room);
socket.on("message", (msg) => {
io.to(room).emit("update_msg", msg);
});
});
});
const PORT = process.env.PORT || 5000;
httpServer.listen(PORT, () => {
console.log(`Server has started on port number ${PORT}`);
});
我的客戶端代碼如下。
const socket = io("http://localhost:5000");
socket.emit("join_room", "Room1");
當我運行上述代碼時,它不會在控制臺中列印任何內容。我分別在服務器端和客戶端使用 socket.io 和 socket.io-client 版本 4.5.0。
uj5u.com熱心網友回復:
const express = require("express");
const { createServer } = require("http");
const { Server } = require("socket.io");
const cors = require('cors')
const app = express();
app.use(cors())
const httpServer = createServer(app);
const io = new Server(httpServer, { cors: {
origin: "http://localhost:4200",
methods: ["GET", "POST"]
}});
io.on("connection", (socket) => {
console.log("New user connected");
socket.on("join_room", (room) => {
socket.join(room);
socket.on("message", (msg) => {
io.to(room).emit("update_msg", msg);
});
});
});
const PORT = process.env.PORT || 5001;
httpServer.listen(PORT, () => {
console.log(`Server has started on port number ${PORT}`);
});
希望上面的代碼可以作業。如果您嘗試從不同的來源訪問,請確認您是否啟用了 CORS?
供您參考,我在創建 HTTP 服務器時添加了 CORS
參考:https ://socket.io/docs/v3/handling-cors/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/468238.html
