Socket.io客户端仅在每隔一次连接时加入文件室

Socket.io客户端仅在每隔一次连接时加入文件室,socket.io,socket.io-1.0,Socket.io,Socket.io 1.0,我一直在尝试创建一个基本的通知系统,它使用Socket.io中的文件室。但是,由于某些原因,它只在每隔一次刷新页面时起作用 我简化了代码,使其更易于调试,但问题仍然存在。每次我刷新页面时,除了加入一个房间(只有一半的时间有效)之外,其他一切似乎都正常。会发生什么事 编辑:我正在使用Socket.io版本1.1.0和Node.js版本0.10.31 编辑2:增加了FunnyLookinHat的建议(但仍然不能解决问题) 客户端代码: socket = io.connect('example.com

我一直在尝试创建一个基本的通知系统,它使用Socket.io中的文件室。但是,由于某些原因,它只在每隔一次刷新页面时起作用

我简化了代码,使其更易于调试,但问题仍然存在。每次我刷新页面时,除了加入一个房间(只有一半的时间有效)之外,其他一切似乎都正常。会发生什么事

编辑:我正在使用Socket.io版本1.1.0和Node.js版本0.10.31 编辑2:增加了FunnyLookinHat的建议(但仍然不能解决问题)

客户端代码:

socket = io.connect('example.com:8081'),

socket.on('connect', function () {
    socket.on('startup', function(data) {
        console.log(data.message);
    });
    socket.emit('joinRoom');
});
var io = require('socket.io').listen(8081);

io.sockets.on('connection', function (socket) {

    console.log(socket.id + ' connected!');

    socket.emit('startup', { message: 'Socket started!' });

    socket.on('joinRoom', function(){
        console.log(socket.id + ' joining room lobby'); // prints on every other request
        socket.join('lobby');
    });

    socket.on('disconnect', function() {
        console.log(socket.id + ' disconnected!');
    });

});
Socket started!

(refreshed page)

Socket started! 
UIBqVuOiF1fegMIMAAAB connected!
UIBqVuOiF1fegMIMAAAB joining room lobby
UIBqVuOiF1fegMIMAAAB disconnected!

(refreshed page)

x3nMilBOjjFVjBFJAAAC connected!

(after about a minute once the client window has been closed or refreshed)

x3nMilBOjjFVjBFJAAAC disconnected!
服务器端代码:

socket = io.connect('example.com:8081'),

socket.on('connect', function () {
    socket.on('startup', function(data) {
        console.log(data.message);
    });
    socket.emit('joinRoom');
});
var io = require('socket.io').listen(8081);

io.sockets.on('connection', function (socket) {

    console.log(socket.id + ' connected!');

    socket.emit('startup', { message: 'Socket started!' });

    socket.on('joinRoom', function(){
        console.log(socket.id + ' joining room lobby'); // prints on every other request
        socket.join('lobby');
    });

    socket.on('disconnect', function() {
        console.log(socket.id + ' disconnected!');
    });

});
Socket started!

(refreshed page)

Socket started! 
UIBqVuOiF1fegMIMAAAB connected!
UIBqVuOiF1fegMIMAAAB joining room lobby
UIBqVuOiF1fegMIMAAAB disconnected!

(refreshed page)

x3nMilBOjjFVjBFJAAAC connected!

(after about a minute once the client window has been closed or refreshed)

x3nMilBOjjFVjBFJAAAC disconnected!
客户端控制台:

socket = io.connect('example.com:8081'),

socket.on('connect', function () {
    socket.on('startup', function(data) {
        console.log(data.message);
    });
    socket.emit('joinRoom');
});
var io = require('socket.io').listen(8081);

io.sockets.on('connection', function (socket) {

    console.log(socket.id + ' connected!');

    socket.emit('startup', { message: 'Socket started!' });

    socket.on('joinRoom', function(){
        console.log(socket.id + ' joining room lobby'); // prints on every other request
        socket.join('lobby');
    });

    socket.on('disconnect', function() {
        console.log(socket.id + ' disconnected!');
    });

});
Socket started!

(refreshed page)

Socket started! 
UIBqVuOiF1fegMIMAAAB connected!
UIBqVuOiF1fegMIMAAAB joining room lobby
UIBqVuOiF1fegMIMAAAB disconnected!

(refreshed page)

x3nMilBOjjFVjBFJAAAC connected!

(after about a minute once the client window has been closed or refreshed)

x3nMilBOjjFVjBFJAAAC disconnected!
服务器控制台:

socket = io.connect('example.com:8081'),

socket.on('connect', function () {
    socket.on('startup', function(data) {
        console.log(data.message);
    });
    socket.emit('joinRoom');
});
var io = require('socket.io').listen(8081);

io.sockets.on('connection', function (socket) {

    console.log(socket.id + ' connected!');

    socket.emit('startup', { message: 'Socket started!' });

    socket.on('joinRoom', function(){
        console.log(socket.id + ' joining room lobby'); // prints on every other request
        socket.join('lobby');
    });

    socket.on('disconnect', function() {
        console.log(socket.id + ' disconnected!');
    });

});
Socket started!

(refreshed page)

Socket started! 
UIBqVuOiF1fegMIMAAAB connected!
UIBqVuOiF1fegMIMAAAB joining room lobby
UIBqVuOiF1fegMIMAAAB disconnected!

(refreshed page)

x3nMilBOjjFVjBFJAAAC connected!

(after about a minute once the client window has been closed or refreshed)

x3nMilBOjjFVjBFJAAAC disconnected!

比赛条件!尝试在客户端代码中执行以下操作:

socket = io.connect('example.com:8081'),

socket.on('connect', function () {
    socket.on('startup', function(data) {
        console.log(data.message);
    });

    socket.emit('joinRoom');
});

好消息,但是,在我修复之后,问题仍然存在。这似乎仍然是另外一回事。(为了减少混乱,我将使用此修复程序更新问题,因为它无法解决主要问题。)我也有类似的问题,可能是引擎盖下的一些讨厌的CORS东西,但我不确定。您是否在浏览器中打开同一内容并连接到同一站点?(
socket=io.connect('example.com:8081')
)请注意,拥有或不拥有
www
也很重要。我刚刚厌倦了socket.io。我改用Faye插座,从那以后就再也没有问题了!