我是 WebSocket 的新手,所以我正在嘗試制作一個使用 WebSocket 進行實時更新的應用程式。這是我的代碼:
const PORT = process.env.PORT || 3000;
const INDEX = "./index.html";
const socketIO = require("socket.io");
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.sendFile(INDEX, { root: __dirname });
});
app.listen(PORT, () => {
console.log("SERVER LISTENING ON PORT http://localhost:3000");
});
const io = socketIO(app);
io.on("connection", (socket) => {
console.log("Client connected");
socket.on("disconnect", () => console.log("Client disconnected"));
});
此代碼拋出錯誤如下:
錯誤:您正在嘗試將 socket.io 附加到快速請求處理程式函式。請傳遞一個 http.Server 實體。
但是當我撰寫如下代碼時:
const PORT = process.env.PORT || 3000;
const INDEX = "/index.html";
const socketIO = require("socket.io");
const express = require("express");
const server = express()
.get("/", (req, res) => res.sendFile(INDEX, { root: __dirname }))
.use("/static", express.static("static"))
.listen(PORT, () => console.log(`Listening on ${PORT}`));
const io = socketIO(server);
io.on("connection", (socket) => {
console.log("Client connected");
socket.on("disconnect", () => console.log("Client disconnected"));
});
它只是有效。
請幫幫我這里發生了什么。
先感謝您!!!
uj5u.com熱心網友回復:
socket.io 期望從 app.listen 方法回傳一個實體(其中 app 是一個快速實體)
在第一段代碼中,您傳遞了一個快速實體,正如我上面提到的那樣是錯誤的
第一段代碼的修復,讓你可以更好地理解它
const PORT = process.env.PORT || 3000
const INDEX = './index.html'
const socketIO = require('socket.io')
const express = require('express')
const app = express()
const server = app.listen(PORT, () => {
console.log('SERVER LISTENING ON PORT http://localhost:3000')
})
const io = socketIO(server)
app.get('/', (req, res) => {
res.sendFile(INDEX, { root: __dirname })
})
io.on('connection', (socket) => {
console.log('Client connected')
socket.on('disconnect', () => console.log('Client disconnected'))
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/398085.html
標籤:javascript 节点.js 表达 插座 socket.io
上一篇:如何將UWP應用程式中制作的客戶端套接字與C 中制作的服務器套接字連接起來
下一篇:如何將ElasticsearchSpringDataAggregationsContainer內容映射到自定義模型?
