我试图学习节点并开始使用socket.io创建一个mashup
消息传输已经开始,但我遇到了一些麻烦.
消息传输已经开始,但我遇到了一些麻烦.
消息事件多次触发,导致单个消息在收件人的框中多次出现.我已将套接字路由到exports.chat,并想知道是否导致问题?
缩小问题的范围:消息的触发次数=客户端的连接顺序.也就是说,如果客户端连接第二个,他的消息将触发两次.连接第三个的客户三次.
这是代码片段:
exports.chat = function(io,pseudoArray,req,res){ res.render('chat',{title: 'ChatPanel.'}); var users = 0; io.sockets.on('connection',function (socket) { // First connection users += 1; // reloadUsers(io,users); socket.on('message',function (data) { // Broadcast the message to all if(pseudoSet(socket)) { var transmit = {date : new Date().toISOString(),pseudo : returnPseudo(socket),message : data}; socket.broadcast.emit('message',transmit); console.log("user "+ transmit['pseudo'] +" said \""+data+"\""); } }); socket.set('pseudo',req.session.user,function(){ pseudoArray.push(req.session.user); socket.emit('pseudoStatus','ok'); console.log("user " + req.session.user + " connected"); }); socket.on('disconnect',function () { // Disconnection of the client users -= 1; // reloadUsers(); if (pseudoSet(socket)) { var pseudo; socket.get('pseudo',function(err,name) { pseudo = name; }); var index = pseudoArray.indexOf(pseudo); pseudo.slice(index - 1,1); } }); }); };