Node.js 使用sockjs的用户状态

Node.js 使用sockjs的用户状态,node.js,socket.io,sockjs,Node.js,Socket.io,Sockjs,我在聊天应用程序中使用socket.io作为用户状态,但几个月后,我发现了许多关于防火墙、CPU性能和内存的问题,我听到了许多关于sockjs的好见解,我想知道如何将这些代码从socket.io转换为sockjs 或者如果您有任何其他技术,而不是socket.io或sockjs var app = require('express')(), redis = require('redis'), client = redis.createClient(), server = req

我在聊天应用程序中使用socket.io作为用户状态,但几个月后,我发现了许多关于防火墙、CPU性能和内存的问题,我听到了许多关于sockjs的好见解,我想知道如何将这些代码从socket.io转换为sockjs 或者如果您有任何其他技术,而不是socket.io或sockjs

var app = require('express')(),
   redis = require('redis'),
   client = redis.createClient(),
   server = require('http').createServer(app),
   io = require('socket.io').listen(server);

server.listen(844);
io.enable('browser client minification'); // send minified client
io.enable('browser client etag');
io.enable('browser client gzip'); // gzip the file
io.set('log level', 1); // reduce logging

io.set('transports', [
   ' websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'
]);

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

   socket.on('join', function (userid, hello) {
       socket.set('userid', userid);
       socket.userId = userid;
       var userco = userid + ":connects";
       var usercostat = userid + ":stats";
       var userhashy = userid + ":userhash";

       client.get(userhashy, function (err, replay) {

           if (replay === hello) {
               console.log("tam el tatabok");

               client.get(usercostat, function (err, reply) {
                   if (reply !== "only me") {
                       console.log("not only me ");
                       client.incr(userco);
                       io.sockets.emit("add-user", {
                           id: userid
                       });
                   } else {
                       console.log("only me ");
                       io.sockets.emit("remove-user", {
                           id: socket.userId
                       });
                   }
               });
           } else {
               return false;
           }
       });
   });

   socket.on('disconnect', function (userid) {
       socket.get('userid', function (err, userid) {

           var userco = userid + ":connects";
           client.get(userco, function (err, reply) {
               if (reply > 0) {
                   console.log("akbar men 0");
                   client.decr(userco);
               }
           });

           setTimeout(function () {


               client.get(userco, function (err, reply) {

                   if (reply < 1) {
                       console.log("hanshelo");
                       io.sockets.emit("remove-user", {
                           id: socket.userId
                       });
                   }
               });

           }, 2000);

       });
   });
});
var-app=require('express')(),
redis=require('redis'),
client=redis.createClient(),
server=require('http')。createServer(应用程序),
io=require('socket.io')。侦听(服务器);
听(844);
io.enable('浏览器客户端缩小');//发送小型客户端
io.enable('browser client etag');
io.enable('browser client gzip');//gzip文件
io.set('日志级别',1);//减少伐木
io.set('传输'[
“websocket”、“flashsocket”、“htmlfile”、“xhr轮询”、“jsonp轮询”
]);
io.sockets.on('connection',函数(socket){
socket.on('join',函数(userid,hello){
set('userid',userid);
socket.userId=userId;
var userco=userid+“:connects”;
var usercostat=userid+“:stats”;
var userhashy=userid+“:userhash”;
get(userhash,函数(err,replay){
如果(重播===你好){
控制台日志(“tam el-tatabok”);
get(usercostat,函数(err,reply){
如果(回复!=“只有我”){
console.log(“不仅仅是我”);
client.incr(userco);
io.sockets.emit(“添加用户”{
id:userid
});
}否则{
console.log(“仅限我”);
io.sockets.emit(“删除用户”{
id:socket.userId
});
}
});
}否则{
返回false;
}
});
});
socket.on('disconnect',函数(userid){
get('userid',函数(err,userid){
var userco=userid+“:connects”;
get(userco,函数(err,reply){
如果(答复>0){
控制台日志(“akbar men 0”);
客户数据中心(用户公司);
}
});
setTimeout(函数(){
get(userco,函数(err,reply){
如果(答复<1){
控制台日志(“hanshelo”);
io.sockets.emit(“删除用户”{
id:socket.userId
});
}
});
}, 2000);
});
});
});
当我迁移到sockjs时,我面临的主要问题是,我需要像socket.set和socket.get这样的东西。在这里我有用户id,以便在用户打开或关闭连接时使用它