Sie vermuten, dass wir zwei registrierte Benutzer als User1 und User2 haben und beide im System angemeldet sind, jetzt User1 möchte Nachricht an User2 senden, nach dem Senden einer Nachricht an ihn, sagte mein Nodejs Server user2 nicht angeschlossen ist, und wenn Benutzer2 Nachricht an User1 senden möchten bekomme ich dies mitteilen, welche User1 nicht verbunden, aber beide Benutzer verbunden sind,Nodejs kann nur Nachricht an Besitzer Nachricht Absender senden
jetzt
- User1 nur Nachricht an sich selbst schicken
- Benutzer2 kann nur eine Nachricht an sich senden
aber sie konnten nicht Nachricht an andere Benutzer
var socket = require('socket.io'),
express = require('express'),
app = express(),
server = require('http').createServer(app),
io = socket.listen(server),
port = process.env.PORT || 3000,
redis = require("redis"),
redisClient = redis.createClient();
var io_redis = require('socket.io-redis');
io.adapter(io_redis({host: 'localhost', port: 6379}));
require('sticky-socket-cluster/replace-console')();
var options = {
workers : require('os').cpus().length,
first_port : 8000,
proxy_port : 3000,
session_hash: function (req, res) {
return req.connection.remoteAddress;
},
no_sockets: false
};
require('sticky-socket-cluster')(options, start);
function start(port) {
io.sockets.on('connection', function (socket) {
socket.on('login', function (data) {
console.log(data.username);
login(data.username, data.password, function (success, value) {
if (success) {
redisClient.exists(data.username, function (err, doesExist) {
if (err) return;
if (!doesExist) {
redisClient.set(data.username, socket.id, function (err, res) {
redisClient.set(data.username, socket.id);
});
}
else {
redisClient.del(data.username);
redisClient.set(data.username, socket.id, function (err, res) {
redisClient.set(data.username, socket.id);
});
}
});
socket.emit('login', {result: true, id: value});
} else {
socket.emit('login', {result: false});
}
});
});
socket.on('requestMoney', function (data) {
redisClient.get(data.fromUsername, function (err, socketId) {
if (io.sockets.connected[socketId]) {
log.info('message to '+ data.fromUsername + ' sent');
io.sockets.connected[socketId].emit('message', {message: 'Hey !!'});
} else {
log.info(data.fromUsername + ' NOT Login');
}
});
});
});
server.listen(port, function() {
console.log('Express and socket.io listening on port ' + port);
});
}
@ Tom oh Mann !! Was ist das Problem in Ihrem Fall? –