2012-11-13 44 views
0

我有一個具有三種狀態的Web應用程序。Flash作爲VOIP客戶端崩潰

  1. 撥入—(基本上,沒有一個下文)連接到一個FreeSWITCH的實例
  2. 聽—這個選擇是通過對一個FMS實例正常連接
  3. VOIP —(不同的服務器從#2) 。

當用戶第一次進入應用程序時,通過彈出窗口選擇初始狀態。從那以後,這些都由ComboBox控制。當它改變時,應用程序檢查所有打開的連接,然後關閉它們。然後它打開適當的新連接。

問題是,有時這導致應用程序凍結10-20秒,有時會導致它崩潰,我不知道爲什麼。 trace s在VOIP更改之前應該觸發的消息只在凍結後出現(時間戳會有延遲),但是如果我註釋掉對更改功能的調用,它們將以預期的順序出現。

這是怎麼回事?這種架構是不是成立?有沒有更好的方式去做事情?

+3

一些問題:1)它是一個Web應用程序或AIR(或其他)? 2)如果你只是反覆關閉所有連接,你能重現崩潰嗎?或者只是反覆打開一堆連接? 3)在崩潰之前,您是否看到服務器上的任何活動(IE post連接)? – ethrbunny

+0

認爲你只需要做兩件事就可以獲得更多的日誌記錄信息,看看它爲什麼會崩潰,檢查mm.cfg文件(谷歌它),你可以在AS3端更深入的函數調用日誌記錄,在服務器端「尾巴-f」你可以任何日誌。有可能在某個地方出現錯誤,這會幫助你走上正確的道路。 – shaunhusain

+0

@shaunhusain我的一個問題是,這個問題在Chrome中最常出現,它使用了自己的Flash播放器(不幸的是,沒有辦法阻止用戶做煩人的調整)。由於mm.cfg僅影響Flash調試播放器,這意味着使用傳統的「跟蹤」功能將無法工作。 – cwallenpoole

回答

0

顯然......連接是一個紅色的鯡魚。

在查看服務器上的結果後,很明顯問題在於將調用放置在Flex生成的EventListener內部的處理函數中。之前的開發人員使用導致崩潰的change="handler(event)"屬性。當我切換到<voip-drop-box>.addEventListener("change",function(e:Event):void{});時,一切都立即清理完畢。