2016-10-05 81 views
0

我跟蹤使用socket.io連接的插座數量。使用socket.io計算連接插座的數量

在服務器上,我使用的代碼

let numClients = 0; 

io.on('connection', (socket) => { 
    io.sockets.emit('number sockets', numClients++); 

    socket.on('disconnect',() => { 
    io.sockets.emit('number sockets', numClients--); 
    }); 
}); 

,並在客戶端上,我已經使用

socket.on('number sockets', (numClients) => { 
    document.getElementById('numClients').textContent = numClients; 
}); 

但如果我刷新頁面,這個數字只是上升。它不應該是相同的連接?

我如何確保它只顯示打開網站的套接字數量?

編輯

我想這應該是++numClients--numClients,但它仍然不能使沒有被正確觸發的斷開事件有很大的區別。

+0

可能的重複http://stackoverflow.com/questions/6563885/socket-io-how-do-i-get-a-list-of-connected-sockets-clients – abdulbarik

回答

-1

這裏有一個github issue。問題是,每當有人斷開socket.io不會刪除(splice)從陣列,但只是將值設置爲「null」

這是一個大腦的嗡嗡聲,爲什麼在socket.io背後的人已經離開了東西就像那樣,但是最好在github問題中解釋一下,我把它作爲鏈接發佈!

+0

與http:// stackoverflow相同的答案.com/a/10276446/2378710,但我不認爲它對我有幫助,因爲這正是我正在做的事情,但事件並沒有如我所想的那樣開火 – Jamgreen

+0

是的。我以爲你錯過了這個問題。好。讓我們看看可以做些什麼...... –

+0

你提到的Github上的bug報告是舊的,最新的評論說它不再在當前版本中發生。 – jfriend00