socket.io仅在页面重新加载后发出消息

时间:2015-03-03 09:06:55

标签: javascript node.js socket.io

我有socket.io的问题。客户端可以向服务器发送消息以进行连接,但是如果我离开连接然后尝试重新连接,则套接字io不会发出消息('joinPerformance')。只有当我刷新页面然后我才能发出消息。

#CLIENT
function loginSuccess(easyrtcid, noMedia) {
    selfEasyrtcid = easyrtcid;
    console.log('loginSuccess',selfEasyrtcid);
    //arm socket events only once
    if(!socket){
        socket = easyrtc.webSocket;
        streaming.armEvents(socket);
    }
    settings.isStarted=true;
    if(typeof settings.bindings.loginSuccess==='function')
        settings.bindings.loginSuccess(easyrtcid);

    if(settings.isInitiator===true){
        console.log('Telling server to start performance');
        socket.emit('startPerformance', {performanceID: settings.performanceID});
    }else{
        console.log('Telling server to join performance');
        socket.emit('joinPerformance', {performanceID: settings.performanceID});
    }
}

#SERVER
socket.on('joinPerformance', function (data) {
    console.log('joinPerformance', data);
    if(validateData(data, socket))
        onJoinPerformance(data, socket);
});

function onJoinPerformance(data, socket) {
console.log('Join performance', data.performanceID);
console.log('rooom info',socket.adapter.rooms[data.performanceID]);
if(!socket.adapter.rooms[data.performanceID] || !socket.adapter.rooms[data.performanceID][socket.id] )
        socket.join(data.performanceID);
if (!streamingPerformances[data.performanceID]) {
    console.log('No such performance is streaming');
    error(socket, 'No such performance is streaming');
} else {
    console.log('joined performance');
    streamingPerformances[data.performanceID].activeViewers[data.userID] = data;
    streamingPerformances[data.performanceID].activeViewersCount++;
    socket.emit('joinedPerformance', streamingPerformances[data.performanceID]);
    socket.broadcast.to(data.performanceID).emit('performanceState', streamingPerformances[data.performanceID]);
}

}

0 个答案:

没有答案