gpt4 book ai didi

javascript - 用户收到超过 1 个来自 Node.js 的通知

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:47 25 4
gpt4 key购买 nike

这是我第一次使用nodejs,我遇到了一些问题。主要问题是用户从服务器接收到超过 1 个信号。计数基于页面的刷新。下面是我的代码:

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 代码:

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 发送到服务器。之后我创建一个新房间,其名称与 user_id 相同。当然,断开连接后,房间应该被删除。我注意到 sub.on() 被多次触发,但我不明白为什么。我将不胜感激任何帮助。预先感谢您!

最佳答案

问题是您在 connection 事件中使用处理程序,每次客户端连接时,它都会执行 connection 事件中的所有内容,包括您的 sub.on

sub.on 置于 connection 事件之外,它应该会停止双消息

关于javascript - 用户收到超过 1 个来自 Node.js 的通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24158804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com