2016-11-26 84 views
0

我想用自定義參數手動發送斷開連接事件到socket.io服務器。我用這個功能,但將無法工作:Socket.io發送脫機事件與參數

//客戶

var userId = 23; 
socket.disconnect(user); 

//服務器

socket.on('disconnect', function (data) { 
     console.log('DISCONNECT: '+ data) 
    }) 

現在,我怎麼能發送更多的數據服務器斷開連接時發送的事件?

回答

4

套接字IO的斷開連接事件在內部被觸發,但您可以在調用它時發出自定義事件。

您需要先聽取斷開連接事件。一旦這個事件被調用,你應該發出你自己的自定義事件,我們稱之爲myCustomEvent一旦這個事件被調用,你的客戶應該在聽你的myCustomEvent,聽到它,然後應該輸出你通過它的數據。例如:

io.sockets.on('connection', function (socket) { 
    const _id = socket.id 
    console.log('Socket Connected: ' + _id) 
    // Here we emit our custom event 
    socket.on('disconnect',() => { 
    io.emit('myCustomEvent', {customEvent: 'Custom Message'}) 
    console.log('Socket disconnected: ' + _id) 
    }) 
}) 

那麼你的客戶會聽myCustomEvent像這樣

socket.on('myCustomEvent', (data) => { 
    console.log(data) 
}) 

我希望這有助於:)

+0

但是,如果客戶端發送一個斷開事件已經,什麼是保證他會聽myCustomEvent?那意味着他沒有斷開對嗎? – yaswanth

+0

自定義事件將是它離開之前發出的最後一個事件,並且每個其他仍然連接的剩餘套接字將會聽到該事件 – Jackthomson