示例#1
0
  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'}));
    }
  });