Luar's Flash Playground:保證失敗的偵測和踢走已經斷線的使用者的方法
保證失敗的偵測和踢走已經斷線的使用者的方法 (20-12-2005)

如果在網上搜尋,不難發現流傳著一段偵測和踢走已經斷線的使用者的FlashCom ASC程式碼,我以前也是用它的。隨著實戰經驗增加,已經發現這段程式碼是沒有用,在大部分情況,例如當機,網絡中斷,拔掉網絡連線等,FlashCom根本偵測不到使用者已經斷線。

這問題在Linux版的FlashCom一定出現,Windows版比較少見。在Linux版中,打開Communication App Inspector,Live Log一頁,經常會出現Response object not found,因為負責處理Client傳回結果的onResult根本不存!

到真的偵測到已經斷線的使用者,想用application.disconnect()踢走他時,如果使用者正有Stream連線,雖然執行disconnect()的結果是true,但實際上disconnect()根本踢不走他,這當然連onDisconnect()也沒有觸發。變成了使用者的Client Object永遠存在,這就是常見所謂的Ghost User,最後還是要等20分鐘後FlashCom清除垃圾時才可以踢走他。

因此這段流行的程式碼,只適合思考上概念啟發,根本不能用於實戰,還是自己踏實地寫一段吧。

(本文針對FlashCom 1.5.2撰寫)

本文章由發表。
意見
"; print "沒有意見。
 "; } ?>
  • 呵呵,这个问题困扰过我很久喔,而且上Luar的站来找过答案,最后还是要自己改写一段,用timer 不断的检查ping的值,然后自己维护一个Client的list,才比较稳定,还是有可能出现Ghost User。

    这是FCS最大的一个bug

    由KevinBMM於22-12-2005發表

  • 我的方案,另外建一个user list的服务器,如果那里的用户消失了,但fcs的用户还在,就在server client断掉他.

    video於25-12-2005發表

  • 请问,如果服务器是Linux的,那应该如何做掉线的侦测呢?能否提供参考代码或者分析思路?谢谢。

    由爱伊於04-04-2006發表

同組文章