I am new in nodejs so may be it's question sounds weird but thing what i need is that i want to create a chat application where user logged in then they can chat each other one to one or one to many but problem is that if user refresh the browser then how can i maintain socket id of user list which i maintain in server side here is my code which i used
Server Side
var app = require('express')();
var fs = require('fs');
var forceSsl = require('express-force-ssl');
app.use(forceSsl);
var options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt')
};
var server = require('https').createServer(options, app).listen(3000,function(){
console.log("Https server started on port 3000");
});
var io = require('socket.io').listen(server);
var sockets = {};
var users = {};
io.on('connection', function(socket)
{
console.log("Hi i am connected");
// Emit the connected users when a new socket connects
for (var i in sockets)
{
socket.emit('user.add', { username: sockets[i].username, id: sockets[i].id });
}
// Add a new user
socket.on('username.create', function (data)
{
socket.username = data;
sockets[socket.id] = socket;
users[data] = socket.id;
io.emit('user.add',{ username: socket.username, id: socket.id });
});
// Send the hug event to only the socket specified
socket.on('pm', function (data)
{
io.to(users[data.username]).emit('message', data.message);
});
// Remove disconnected users
socket.on('disconnect', function ()
{
delete sockets[socket.id]; io.emit('user.remove', socket.id);
});
});
Client Side
socket.emit('username.create', results.email);
socket.on("message", function(data) {
//here i want to display message who send to this user
});
$(document).on('click','#gotou',function()
{
var sendto = $("#msgto").val();
socket.emit("pm", {"username":sendto,"message":"Testing from "+checkusername});
});