Socket io Throws error : You are trying to attach socket.io to an express request handler function
Socket io Throws error : You are trying to attach socket.io to an express request handler function
我是 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"));
});
它很管用。
请帮帮我这是怎么回事。
提前致谢!!!
socket.io 期望从 app.listen 方法返回一个实例(其中 app 是一个快速实例)
在第 1 段代码中,您传递了一个 express 实例,正如我上面提到的,这是错误的
第一段代码的修复,让您更好地理解它
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'))
})
我是 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"));
});
它很管用。
请帮帮我这是怎么回事。
提前致谢!!!
socket.io 期望从 app.listen 方法返回一个实例(其中 app 是一个快速实例)
在第 1 段代码中,您传递了一个 express 实例,正如我上面提到的,这是错误的
第一段代码的修复,让您更好地理解它
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'))
})