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