Top 5 100% Free 3d 2d Animation Software in 2021 | Free Open Source Software

Chat with Rooms

Install Node

Also install Git

1. Create folder (testapp) in c:\
2. Create index.js and index.html
3. Open cmd prompt and type command cd c:\testapp


4. Next type command

npm install socketio
npm install express

To check node is installed just type npm in cmd prompt

Next type command npm init
Hit enter with required data

type yes at end
This will create package.json file

Copy the code in each file index.js and index.html


var app = require('express')();
var http=require('http').Server(app);
var io = require('')(http);

http.listen(8080, function(){

console.log("Listening at 8080");


// routing
app.get('/', function (req, res) {

// usernames which are currently connected to the chat
var usernames = {};

// rooms which are currently available in chat
var rooms = ['room1','room2','room3'];

io.sockets.on('connection', function (socket) {

// when the client emits 'adduser', this listens and executes
socket.on('adduser', function(username){
// store the username in the socket session for this client
socket.username = username;
// store the room name in the socket session for this client = 'room1';
// add the client's username to the global list
usernames[username] = username;
// send client to room 1
// echo to client they've connected
socket.emit('updatechat', 'SERVER', 'you have connected to room1');
// echo to room 1 that a person has connected to their room'room1').emit('updatechat', 'SERVER', username + ' has connected to this room');
socket.emit('updaterooms', rooms, 'room1');

// when the client emits 'sendchat', this listens and executes
socket.on('sendchat', function (data) {
// we tell the client to execute 'updatechat' with 2 parameters'updatechat', socket.username, data);

socket.on('switchRoom', function(newroom){
// leave the current room (stored in session)
// join new room, received as function parameter
socket.emit('updatechat', 'SERVER', 'you have connected to '+ newroom);
// sent message to OLD room'updatechat', 'SERVER', socket.username+' has left this room');
// update socket session room title = newroom;'updatechat', 'SERVER', socket.username+' has joined this room');
socket.emit('updaterooms', rooms, newroom);

// when the user disconnects.. perform this
socket.on('disconnect', function(){
// remove the username from global usernames list
delete usernames[socket.username];
// update list of users in chat, client-side
io.sockets.emit('updateusers', usernames);
// echo globally that this client has left
socket.broadcast.emit('updatechat', 'SERVER', socket.username + ' has disconnected');


<script src="http://localhost:8080/"></script>
<script src=""></script>
var socket = io.connect('http://localhost:8080');

// on connection to server, ask for user's name with an anonymous callback
socket.on('connect', function(){
// call the server-side function 'adduser' and send one parameter (value of prompt)
socket.emit('adduser', prompt("What's your name?"));

// listener, whenever the server emits 'updatechat', this updates the chat body
socket.on('updatechat', function (username, data) {
$('#conversation').append('<b>'+username + ':</b> ' + data + '<br>');

// listener, whenever the server emits 'updaterooms', this updates the room the client is in
socket.on('updaterooms', function(rooms, current_room) {
$.each(rooms, function(key, value) {
if(value == current_room){
$('#rooms').append('<div>' + value + '</div>');
else {
$('#rooms').append('<div><a href="#" onclick="switchRoom(\''+value+'\')">' + value + '</a></div>');

function switchRoom(room){
socket.emit('switchRoom', room);

// on load of page
// when the client clicks SEND
$('#datasend').click( function() {
var message = $('#data').val();
// tell server to execute 'sendchat' and send along one parameter
socket.emit('sendchat', message);

// when the client hits ENTER on their keyboard
$('#data').keypress(function(e) {
if(e.which == 13) {

<div style="float:left;width:100px;border-right:1px solid black;height:300px;padding:10px;overflow:scroll-y;">
<div id="rooms"></div>
<div style="float:left;width:300px;height:250px;overflow:scroll-y;padding:10px;">
<div id="conversation"></div>
<input id="data" style="width:200px;" />
<input type="button" id="datasend" value="send" />


emit is for sending data (Send with custom name say like A)

socket.emit('A','some text');

on is for getting data (Get data with same name A)


//your code 



Now ... in cmd prompt type node index.js
and open file index.html