2016-02-27 50 views
1

我試圖發送一個事件到插座例如插座內爲什麼發出不插座內

io.on('connection', function (socket) { 
    socket.emit("connected", {msg: 1}); 

    socket.on('funcb', function (data) { 
    console.log('funca sent following data'); 
    console.log(data); 
    }); 

    socket.on('funca', function (data) { 
    console.log(data); 
    socket.emit('funcb', data); 
    }); 


}); 

FuncA的是從客戶端/瀏覽器調用工作,並嘗試調用funcb但FUNC b任何未正常運行想法?

+0

你發出'聽之前funcb'到' funcb'。嘗試在'socket.on('funca'' –

+0

之前移動'socket.on('funcb'...'可能是「emit」只是將事件發送回客戶端(瀏覽器)而不是套接字本身,所以它無法捕獲事件'funcb',我在客戶端(瀏覽器)捕獲funcb – Tofeeq

+0

你試過將'socket.on('funcb''替換爲'this.on('funcb'' –

回答

0

可能是在「發射」只是發送事件返回到客戶端(瀏覽器)不是插座本身,所以它是無法趕上事件「funcb」

0

socket.emit('funcb', data)從客戶端發送不會調用socket.on('funcb')監聽器客戶端。它將發送到另一端並調用服務器上的socket.on偵聽器。

+1

)實際上它會調用所有誰聽' funcb'包括''''''''但是'socket.broadcast.emit'將會調用所有監聽'funcb'的人,除了發出它的人 –

+0

@JohnPangilinan你錯了。 – bolav

1

要解釋什麼@bolav用代碼表示:

客戶端:

socket.emit("connected", {msg: 1}); 

    socket.on('funcb', function (data) { 
    console.log('funcb from server sent following data'); 
    console.log(data); 
    }); 

    socket.on('funca', function (data) { 
    console.log(data); 
    socket.emit('funcb', data); 
    }); 

服務器端:

socket.on('funcb', function (data) { 
console.log('funca from client side sent following data'); 
console.log(data); 
socket.emit("funcb", data); 
}); 
相關問題