You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi i'm implementing simple socket by your code, but from android i cant check login
my login function and socket work fine without using Cluster, could you help me?
var express = require('express'),
cluster = require('cluster'),
net = require('net'),
sio = require('socket.io'),
mysql = require('mysql'),
sio_redis = require('socket.io-redis');
var port = 3000,
num_processes = require('os').cpus().length;
var connection = mysql.createConnection(
{
host : 'localhost',
user : 'root',
password : 'a',
database : 'shoot',
multipleStatements: true
});
if (cluster.isMaster) {
var workers = [];
var spawn = function (i) {
workers[i] = cluster.fork();
workers[i].on('exit', function (worker, code, signal) {
console.log('respawning worker', i);
spawn(i);
});
};
// Spawn workers.
for (var i = 0; i < num_processes; i++) {
spawn(i);
}
var worker_index = function (ip, len) {
var s = '';
for (var i = 0, _len = ip.length; i < _len; i++) {
if (!isNaN(ip[i])) {
s += ip[i];
}
}
return Number(s) % len;
};
var server = net.createServer({pauseOnConnect: true}, function (connection) {
var worker = workers[worker_index(connection.remoteAddress, num_processes)];
worker.send('sticky-session:connection', connection);
}).listen(port);
} else {
// Note we don't use a port here because the master listens on it for us.
var app = new express();
// Here you might use middleware, attach routes, etc.
// Don't expose our internal server to the outside.
var server = app.listen(0, 'localhost'),
io = sio(server);
io.adapter(sio_redis({host: 'localhost', port: 6379}));
process.on('message', function (message, connection) {
if (message !== 'sticky-session:connection') {
return;
}
server.emit('connection', connection);
connection.resume();
});
io.on('login', function (data) {
login(data.username, data.password, function (success, value) {
if (success)
redisClient.set(data.username, socket.id);
socket.emit('login', {result: success, id: value});
});
});
}
function login(username, password, callback) {
var query = "SELECT * FROM users WHERE username = ?";
connection.query(query, [username], function (err, results) {
if (err) return callback(false);
if (results.length === 0) return callback(false);
var user = results[0];
if (!bcrypt.compareSync(password, user.password)) {
return callback(false);
}
callback(true, {
id: user.id.toString(),
});
});
}
The text was updated successfully, but these errors were encountered:
Hi i'm implementing simple socket by your code, but from android i cant check login
my login function and socket work fine without using Cluster, could you help me?
The text was updated successfully, but these errors were encountered: