刷新页面后套接字不工作

我build立了一个使用socket.io和expressjs的小应用程序

服务器端

var express = require('express'), sio = require('socket.io'); var app = express.createServer(); app.configure('development', function(){ app.use(express.bodyParser()); app.use(express.cookieParser()); app.use(express.static(__dirname + '/')); app.set('views', __dirname + '/views'); app.use(express.errorHandler({dumpExceptions: true, showStack: true})); app.use(app.router); }); app.listen(4000); var io = sio.listen(app); app.get('/', function (req, res) { res.redirect('index.html'); }); io.sockets.on('connection', function (socket) { app.post('/mysegment',function(req,res){ var userData = req.body; socket.emit('sendUser', userData); res.send("yes I got that segment"); }); socket.on('getUser',function(msg){ console.log("Yes Socket work Properly "+msg); }); }); 

和index.html

 var socket = io.connect(); socket.on('connect', function () { console.log("client connection done....."); }); socket.on('sendUser', function (data) { alert("On send user"); socket.emit('getUser',"Hello"); }); 

这个演示完美的工作,但当我刷新页面和发送请求到“/ mysegment”,我的时间套接字不能正常工作。 我没有得到消息在我的控制台“是套接字工作正常(和我的味精)”但我得到了答复“是的,我得到了”“请任何build议…

 io.sockets.on('connection', function (socket) { app.post('/mysegment', ... 

这里发生的事情是,每当客户端连接到websocket时, 新的处理程序就会被添加到所有/ mysgment POST请求中。 然后,当任何人发送POST到/ mysegment,所有连接的客户端将得到userData …这可能不是你想要的。

为了简单起见,坚持使用套接字作为一件事,并为其他人使用正常的HTTP。

否则,你将不得不分享会话和/或find相应的套接字。