Luar's Flash Playground:保證失敗的偵測和踢走已經斷線的使用者的方法
新聞(101)
觀點或評論(94)
Flash書(63)
教程(73)
Design Patterns(3)
FlashCom筆記(47)
Flash Remoting筆記(27)
Flex筆記(11)
Flash Lite筆記(14)
PHP資訊(23)
Ajax筆記(9)
習作(51)
組件(17)
酷站(32)
學習資源(28)
書籍推介(15)
本站與我(91)
RSS瀏覽器
聯絡
熱愛鑽研
Ajax
ActionScript
Flash
Flash Lite
Flex
Flash Remoting
FlashCom
Director
Lingo
PHP
Multiplayer Game

搜尋
VCASMO
保證失敗的偵測和踢走已經斷線的使用者的方法 (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撰寫)

本文章由發表。
意見
  • 呵呵,这个问题困扰过我很久喔,而且上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發表

同組文章

Movable Type 4.32-en系統支持,Luar's Production版權所有。