ws.on('message', function(message) { var messageObject = JSON.parse(message); if(messageObject.type === WsSocketMessages.SUBCRIBE){ wsClients.subscribe(ws,messageObject.channel); ws.send(JSON.stringify({subscription : messageObject.channel})); redisClient.lrange("chan:"+messageObject.channel, 0, 19, function(error, response) { if(!error) { for(var i=response.length;i>=0;--i){ wsClients.publish(messageObject.channel,response[i],ws); } } }); }else if(messageObject.type === WsSocketMessages.UNSUBSCRIBE){ wsClients.unsubscribe(ws,messageObject.channel); }else if(messageObject.type === WsSocketMessages.ADD){ var channelKey = "chan:"+messageObject.channel; redisClient.lpush(channelKey,messageObject.message, function(error, response) { if(error) { ws.send(JSON.stringify({subscription : messageObject.channel,status : 500})); } else { wsClients.publish(messageObject.channel,messageObject.message); ws.send(JSON.stringify({subscription : messageObject.channel,status : 204})); } }); }else{ // type does not exist ws.send(JSON.stringify({subscription : messageObject.channel,status : 404,message : 'message type not valid'})); } });