設(shè)備登錄后綁定對應(yīng)的設(shè)備和clientid,稱此時的clientid為id1,設(shè)備30分鐘會發(fā)送一次登錄指令,當(dāng)設(shè)備再次發(fā)送登錄指令時,有時候會出現(xiàn)clientid不一樣的情況,稱此時的clientid為id2,,那么此時就出現(xiàn)了一臺設(shè)備,兩個clientid的情況,此時設(shè)備的心跳指令會在id2的通道進行收發(fā),那么超時之后,id1就會觸發(fā)onclose。觸發(fā)onclose時,會更新數(shù)據(jù)庫里面設(shè)備的狀態(tài),這樣就會出現(xiàn)設(shè)備在線,但數(shù)據(jù)庫里面的設(shè)備離線的情況,所以我需要在onclose里面需要判斷設(shè)備是否綁定有多個clientid,如果有多個則不去更新數(shù)據(jù)庫設(shè)備的狀態(tài),我該如何判斷呢?可以調(diào)用Gateway::getClientIdByUid這個函數(shù)嗎?
第二次登陸把 clientID2 存到庫里邊 覆蓋clientid1
我這邊clientid并沒有寫入數(shù)據(jù)庫的操作,我可以在登錄時調(diào)用Gateway::getClientIdByUid,
如果返回的clientid和當(dāng)前clientid不一致,將之前的clientid進行解綁,這樣可以嗎?如果解綁了,$session還有效嗎?
或者我通過Gateway::closeClient($client_id)將第一次登錄的clientid關(guān)閉?
你這是邏輯處理的問題, 第一次登陸 存$_SESSION信息(設(shè)備序列號啥的), 第二次登陸 判斷session是否設(shè)置了信息, 設(shè)置則不處理
第二次登錄后clientid已經(jīng)變了,是不是意味著通道也變了,那么第一次登錄的clientid所在的通道的session在第二次登錄的clientid里面,是無法讀取吧
這邊也不太清楚,可能涉及到設(shè)備的問題,我這邊監(jiān)控onmessage里面的信息,發(fā)現(xiàn)設(shè)備在未斷開的時候,發(fā)送了一條新的登錄指令過來,新的clientid