-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
1 lines (1 loc) · 1.06 KB
/
Copy pathindex.js
File metadata and controls
1 lines (1 loc) · 1.06 KB
1
var express=require('express');var app=express();var path=require('path');var server=require('http').createServer(app);var io=require('socket.io')(server);const open=require('open');var port=process.env.PORT||3000;server.listen(port,function(){open(`http://localhost:${port}`);});app.use(express.static(__dirname));var numUsers=0;io.on('connection',function(socket){var addedUser=false;socket.on('new message',function(data){socket.broadcast.emit('new message',{username:socket.username,message:data});});socket.on('add user',function(username){if(addedUser)return;socket.username=username;++numUsers;addedUser=true;socket.emit('login',{numUsers:numUsers});socket.broadcast.emit('user joined',{username:socket.username,numUsers:numUsers});});socket.on('typing',function(){socket.broadcast.emit('typing',{username:socket.username});});socket.on('stop typing',function(){socket.broadcast.emit('stop typing',{username:socket.username});});socket.on('disconnect',function(){if(addedUser){--numUsers;socket.broadcast.emit('user left',{username:socket.username,numUsers:numUsers});}});});