이것은 nodejs에서 처음으로 발생하며 몇 가지 문제가 있습니다. 주된 문제점은 사용자가 서버에서 두 개 이상의 신호를 수신한다는 것입니다. 카운트는 페이지 새로 고침을 기반으로합니다. 다음은 내 코드입니다 :사용자가 nodejs에서 두 개 이상의 알림을 수신합니다.
var http = require('http');
var server = http.createServer().listen(1332);
var io = require('socket.io').listen(server);
var redis = require('redis');
var sub = redis.createClient();
//Subscribe to the Redis chat channel
sub.subscribe('notification_count');
console.log("Server is running...\nClick on Ctrl+C to exit");
io.sockets.on('connection', function (socket) {
var user_id = socket["handshake"]["query"]["user_id"];
console.log("user_id", user_id);
socket.room = user_id;
socket.join(user_id);
socket.on('disconnect', function(){
socket.leave(socket.room);
});
//Grab message from Redis and send to client
sub.on('message', function(channel, message){
io.sockets.in(message).emit('message', message);
});
});
그리고 여기 클라이언트 측 JS 코드입니다 : 내가 서버 USER_ID로 보내 서버의 연결에 기본적으로
var socket = io.connect('localhost:1332', { query: "user_id={{ request.user.id }}" });
socket.on('connect', function(){
console.log("connected");
});
socket.on('message', function(message) {
//something
});
. 그 후 나는 user_id와 같은 이름의 새로운 방을 만든다. 물론 연결 해제시 방을 삭제해야합니다. 나는 sub.on()이 두 번 이상 해고되었음을 알았지 만, 나는 이유를 알 수 없다. 나는 어떤 도움을 주셔서 감사합니다. 미리 감사드립니다.
네가 맞다! 도와 줘서 고마워. :) –