Node.js 使用sockjs的用户状态
我在聊天应用程序中使用socket.io作为用户状态,但几个月后,我发现了许多关于防火墙、CPU性能和内存的问题,我听到了许多关于sockjs的好见解,我想知道如何将这些代码从socket.io转换为sockjs 或者如果您有任何其他技术,而不是socket.io或sockjsNode.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
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,以便在用户打开或关闭连接时使用它