gatewayworker pingInterval 設(shè)置20 pingNotResponseLimit 設(shè)置2 pingData 設(shè)置 '' ,偶爾還是有的鏈接沒有執(zhí)行onClose方法,請(qǐng)問可能是什么原因呢
沒看到其它進(jìn)程配置。會(huì)不會(huì)有可能判斷onClose執(zhí)行沒執(zhí)行的方法有問題?
另外看到初始化多個(gè)gateway,每個(gè)gateway使用的是不同的register,意思是要啟動(dòng)多個(gè)互相獨(dú)立gatewayWorker?
建議不要啟動(dòng)多個(gè)獨(dú)立gatewayWorker,使用只啟動(dòng)一個(gè)gatewayWorker測試下,有可能是因?yàn)閱?dòng)多個(gè)gatewayWorker但是進(jìn)程配置沒設(shè)置好。
還有把所有進(jìn)程都停止,然后用 ps auxf 命令看下,是不是有殘余的GatewayWorker進(jìn)程。進(jìn)程沒停止干凈也可能導(dǎo)致問題。
相互獨(dú)立的GatewayWorker 進(jìn)程模型,做游戲開發(fā)涉及到房間,同一個(gè)房間內(nèi)玩家只能在同一個(gè)進(jìn)程, onClose 后玩家執(zhí)行下線,數(shù)據(jù)存儲(chǔ)操作,發(fā)現(xiàn)個(gè)別玩家并沒有執(zhí)行下線邏輯
估計(jì)和我遇到的問題一樣,極端網(wǎng)絡(luò)情況下業(yè)務(wù)代碼邏輯沒處理好造成的。
查看 vender/workerman/workerman.log 并沒有報(bào)錯(cuò)信息產(chǎn)生,沒有進(jìn)程重啟日志,onClose 卻沒收到,下線邏輯處理不了 ,導(dǎo)致用戶無法再次登錄,業(yè)務(wù)邏輯限制在線玩家再次登錄,必須下線處理完才能登錄
@4786:這和報(bào)錯(cuò)沒什么關(guān)系,客戶端極端網(wǎng)絡(luò)環(huán)境,比如我那個(gè)情況觸發(fā)了onMessage同時(shí)也立即觸發(fā)了onClose,這也導(dǎo)致我onMessage里面登陸流程沒走完就斷開了,onClose里面獲取不到登陸的用戶信息。
我的用戶信息不是通過session獲取的 ,onClose 有client_id參數(shù) 內(nèi)存里通過client_id 獲取用戶信息,登錄的時(shí)候信息存在內(nèi)存里