【发布时间】:2018-07-03 16:06:24
【问题描述】:
这是我的 server.js 文件。在这个我在每次创建时创建一个新房间 房间请求,然后将创建的房间推送到房间数组中。 用户名和房间名是通过发布请求形成的。但我不知道为什么它每次都使用新的套接字 ID 创建所有以前的房间 喜欢。如果我第一次给它一个用户名:abc 和房间名:房间1,它会创建一个房间,那么下一次如果我要创建一个房间用户名:abc2 和房间名:房间2 与新的套接字连接,它会再次创建旧房间( username:abc,roomname:room1) 首先增加房间数组长度,然后创建新房间(用户名:abc2,房间名称:房间2)并增加房间数组的长度。
//server.js
const express = require('express');
const app = new express();
const socket = require('socket.io');
const bodyParser = require('body-parser');
const port = process.env.PORT || 8000;
const server = app.listen(port,() =>{
console.log(`server is running on the port number ${port}`);
})
const io = socket(server);
app.use(express.static(`${__dirname}/public`));
app.set('view engine','ejs');
app.set('views',`${__dirname}/views`);
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
let rooms = [];
function pushRoom(rooms,usernme,roomname){
let room = {
name:roomname,
users:[]
}
room.users.push(usernme);
rooms.push(room);
}
function joinRoom(rooms,roomjoinname,username){
for(let i=0 ; i<rooms.length ; i++){
if(rooms[i].name == roomjoinname){
rooms[i].users.push(username);
}
}
}
app.get('/',(req,res,next) =>{
res.render('index');
})
//taking values from user by post request
app.post('/chat',(req,res,next) =>{
io.on('connection',socket =>{
console.log('made a socket connection'+socket.id);
let roomName = req.body.roomName;
let userName = req.body.username;
let roomNameJoin = req.body.roomNameJoin;
pushRoom(rooms,userName,roomName);
socket.join('roomName');
});
res.render('chat');
});
【问题讨论】:
标签: javascript node.js socket.io