【发布时间】:2025-12-19 18:25:11
【问题描述】:
这个简单应用程序的问题在于,从我在终端上运行 nodejs 程序的那一刻起,它就建立了 2 个连接。这意味着在浏览器的 5555 端口请求页面之前,程序会创建 2 个具有 2 个不同 id 的连接
服务器端
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const port = 5555 || process.env.PORT;
const http = require('http')
const options = {};
const cookie = require('cookie');
const app = express();
const server = http.createServer(app);
const io = require('socket.io')(server,options);
app.use(express.static(path.join(__dirname,'views')));
app.set('view engine','ejs');
app.set('views',path.join(__dirname,'views'));
app.use(express.urlencoded({ extended: true }));
let counter =0;
io.on('connection', socket =>{
counter++;
socket.on('private message', (anotherSocketId,msg)=>{
socket.to(anotherSocketId).emit('private message',socket.id,msg);
});
console.log(`server socket id ${counter} : ${socket.id}`);
console.log(`server client : ${socket.client}`);
// console.log(`server ip of client : ${cookie.parse(socket.request.headers.cookie)}`);
});
app.get('/',(req,res)=>{
res.render('index2');
})
server.listen(port,()=>{
console.log(`listening on port : ${port}`);
})
控制台消息:
listening on port : 5555
server socket id 1 : snUlVUeYMoHL_6tuAAAB
server client : [object Object]
server socket id 2 : TLq1SFQ90H7VbMnbAAAD
server client : [object Object]
idk 如果重要,但我在客户端也有此代码
const socket = io();
socket.on('connect',()=>{
console.log(`client socket id : ${socket.id}`)
})
【问题讨论】:
-
启动服务器时,前端标签是否已经打开?
-
是的,就是这样
标签: javascript node.js sockets websocket socket.io