Express4 + Socket.io 0.9:不同的客户端获得相同的非广播消息

这是一个通过passport.js使用validation的网站。

两个不同的用户连接不同的浏览器,他们要求有关他们的用户名的信息。 服务器获取信息并使用socket.io发回。

一切都像一个魅力,但如果两个客户端同时加载页面,其中一个的信息去两个浏览器,看起来像服务器正在写在同一个套接字。

服务器端:

server.js:

var express = require('express'); var app = express(); var http = require('http').createServer(app).listen(8000), io = require('socket.io').listen(http); 

socket.js:

 module.exports = function(app, io) { ... io.sockets.on('connection', function(socket) { ... //Build the information about the user and send it back var userData = userInfo(); socket.emit('userInfo', userData); ... } } 

客户端(包含在index.ejs中的JavaScript文件):

 var socket = io.connect('http://URL:8000'); ... socket.emit("all", {data}); //Hi, I need information about me. ... socket.on('userInfo', function (data) { // do some stuff... }); 

在控制台中的服务器debugging获取关于两个套接字的信息:

  debug - client authorized info - handshake authorized Cq71N34XLyAJBTIbHCZQ debug - setting request GET /socket.io/1/websocket/Cq71N34XLyAJBTIbHCZQ debug - set heartbeat interval for client Cq71N34XLyAJBTIbHCZQ debug - client authorized for debug - websocket writing 1:: ... debug - client authorized info - handshake authorized UF6lOwOFzgjrWY54HCZP debug - setting request GET /socket.io/1/websocket/UF6lOwOFzgjrWY54HCZP debug - set heartbeat interval for client UF6lOwOFzgjrWY54HCZP debug - client authorized for debug - websocket writing 1:: 

我已经重写了应用程序的不同部分,但我不明白为什么服务器应答不同的套接字相同的信息。