繼續(xù)接上一個(gè)問(wèn)題:http://wtbis.cn/q/12834
問(wèn)題找到了,但是我不清楚subscription_count字段是干嘛的,而且程序里面是對(duì)的,但是執(zhí)行的時(shí)候就偏偏并不對(duì)
問(wèn)題就在498行跟499行,當(dāng)我第一次將微信切換后臺(tái)斷開鏈接的時(shí)候,subscription_count等于1,減1后499行能正常銷毀,當(dāng)我微信第二次切換后臺(tái)斷開鏈接的時(shí)候,subscription_count就變成2了,減1后導(dǎo)致無(wú)法進(jìn)行銷毀。
問(wèn)題也在這,按道理說(shuō)第一次就已經(jīng)銷毀了,第二次的時(shí)候subscription_count應(yīng)該是重新鏈接重新賦值應(yīng)該是等于1不應(yīng)該等于2,經(jīng)過(guò)測(cè)試多往返切換幾次subscription_count的值一直在累加并沒有真正的銷毀
微信內(nèi)打開網(wǎng)頁(yè)鏈接websocket后,然后把微信切換至后臺(tái),切換后臺(tái)后等個(gè)幾十秒等websocket自動(dòng)斷開鏈接后在才把微信切回前臺(tái)
這樣來(lái)回切換操作個(gè)兩次就會(huì)發(fā)現(xiàn)$result = $api->get('/channels')返回的在線用戶會(huì)一直在線 ,無(wú)法再次離線
可能你大屏的連接訂閱了對(duì)應(yīng)的頻道
大屏是訂閱的私有頻道:private-daping,所有用戶在線是訂閱的自己的頻道:user-line-xxx,我以上說(shuō)的subscription_count字段一直累加的問(wèn)題都是測(cè)試的同一個(gè)用戶同一個(gè)頻道的情況,我是在調(diào)試模式下一直打印$channel變量跟subscription_count
并非后端問(wèn)題,微信內(nèi)打開網(wǎng)頁(yè)后切換微信至后臺(tái)等斷開鏈接后,再次將微信切換至前臺(tái),此時(shí)網(wǎng)頁(yè)會(huì)發(fā)起兩次鏈接導(dǎo)致subscription_count累加成2(后端調(diào)試模式下在訂閱頻道的函數(shù)里面打印得出的結(jié)論),微信再次切后臺(tái)等斷開鏈接后在切換前臺(tái),此時(shí)網(wǎng)頁(yè)會(huì)發(fā)起三次鏈接導(dǎo)致subscription_count累加成3,以此重復(fù)切換就導(dǎo)致subscription_count會(huì)越來(lái)越大,現(xiàn)在轉(zhuǎn)戰(zhàn)研究前端了