const app = express(); const PORT = 3000; const http = require('http').Server(app); http.listen(PORT, ()=>{ console.log('server listening. Port:' + PORT); }); let messages=[]; app.use( (req,res,next)=>{ console.log({ url:req.url, headers:req.headers }); next(); } ); // // client code // app.get('/index.html', (req,res)=>{ res.sendFile(__dirname+`/html/client.html` )} ); // // soket communication // const io = require('socket.io')(http,{ path:"/socket/" // change path name to socket io }); io.on('connection',socket=>{ const room=process.argv[2] ? process.argv[2] : "Roomhogehoge"; //auth const remoteIP=socket.request.headers["x-remote-addr"]? socket.request.headers["x-remote-addr"].split(",")[0]: "undef"; const from=`${decodeURI(socket.request.headers.from)}[${remoteIP}]`; if(decodeURI(socket.request.headers.room)===room){ //room entry (()=>{ const msg={ from, at :(new Date()).toString(), message:`${from} enters the room.` }; messages.map( msg=>{ socket.emit("message",msg); }); messages.push(msg); io.emit("message",msg); })(); //room exit socket.on("disconnect",()=>{ const msg={ from, at :(new Date()).toString(), message : `${from} exits from the room.` }; messages.push(msg); io.emit("message",msg); }) // message receive socket.on("message", msg=>{ try{ const _msg={ from, at:(new Date()).toString(), message:msg.message }; messages.push(_msg); io.emit("message",_msg) }catch(e){ console.log(e); } }) }else{ // auth fail socket.emit("message",{ from, at :(new Date()).toString(), message : "Please specify the room id you want to enter like https://...../index.html?room=hoge&name=yourname" }); socket.disconnect(); } });