鍍金池/ 問答/Java  HTML/ socket.io如何作為判斷是否監(jiān)聽

socket.io如何作為判斷是否監(jiān)聽

vue前端觸發(fā)一個事件需要監(jiān)聽一個消息
比如新開一個房間,監(jiān)聽人員的加入

socket.on('join',(man)=>{
    this.manArr.push(man)
}

為確保由于原socket斷開導(dǎo)致的無監(jiān)聽,每次觸發(fā)事件后都開啟監(jiān)聽,但這就會導(dǎo)致可能出現(xiàn)重復(fù)監(jiān)聽,造成監(jiān)聽結(jié)果的重復(fù),比如新加入一個小王,結(jié)果是

小王 加入了
小王 加入了

第三次就變成

小王 加入了
小王 加入了
小王 加入了

這里想問 如果判斷這個 join已經(jīng)處于監(jiān)聽狀態(tài)呢。

if(!監(jiān)聽){
    監(jiān)聽
}

回答
編輯回答
執(zhí)念

已找到答案,判斷socket對象是否包含元素
例如監(jiān)聽的是notify則:
if(user.socket._callbacks.$notify){
...

2018年2月5日 12:48
編輯回答
情未了

房間內(nèi)的用戶應(yīng)該在server進(jìn)行一份維護(hù)。
每當(dāng)用戶進(jìn)入時,若用戶不存,則為新加入用戶,可進(jìn)行通知;否則,則不用通知。
另外,用戶連接應(yīng)該有一個連接超時斷開的機(jī)制。

2017年7月26日 00:50