我有server.js
io.sockets.on('connection', function(socket){
socket.on('duplicite', function(name){
for(var i=0; i<clients.length; i++) {
if(clients[i] == name){
io.to(socket.id).emit('duplicite', true);
}else{
io.to(socket.id).emit('duplicite', false);
}
}
});
});
和client.html
socket.emit('duplicite', name);
socket.on('duplicite', function(ret){
if(ret){
alert("non-OK");
}else
{alert("OK");}
});
我想找到重复的东西。当第一个插座连接名称&#34; name&#34;一切都很好,我得到警告&#34; OK&#34;。但当第二个插座连接名称&#34;名称&#34;我得到警告&#34;不好&#34;和&#34;好的&#34;太。
答案 0 :(得分:0)
尝试使用对象,使用方括号表示法检查现有名称更容易:
>>> [z[1] for z in sorted([(x[1], x) for x in a] + [(y[2], y) for y in b], key=operator.itemgetter(0))]
[['abc', 2, 'cde'], ['abc', 'lmn', 2], ['xyz', 5, 'fgh'], ['xyz', 'opq', 5]]
关于使用数组的原始代码,您应该在第一个if条件中放置/*
could use {} but we'll use Object.create(null) to create a basic
dictionary object, so we don't have to use hasOwnProperty()
*/
var clients = Object.create(null);
io.sockets.on('connection', function(socket){
socket.on('duplicite', function(name){
if (!clients[name]) {
socket.emit('duplicite', false);
clients[name] = null; // no duplicate so put name onto object
}
else socket.emit('duplicite', true);
});
});
,因此它不会继续发送消息。