我构建了使用 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”发送发布请求,我发现套接字无法正常工作。 我的控制台上没有收到消息“是的套接字工作正常(和我的消息)” 但我得到了回复“是的,我得到了那个片段” 有什么建议请...
最佳答案
io.sockets.on('connection', function (socket) {
app.post('/mysegment', ...
这里发生的情况是,每次任何客户端与 websockets 连接时,都会向所有/mysgment POST 请求添加一个新的处理程序。然后,当任何人向/mysegment 发送 POST 时,所有连接的客户端都将获得 userData
...这可能不是您想要的。
为了简单起见,一件事坚持使用套接字,其他事情使用普通 HTTP。
否则你将不得不share the session和/或找到相应的套接字。
关于node.js - 刷新页面后套接字不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10118307/