2011-03-24 53 views
0

我們有一個應用程序,其中flex側的按鈕單擊重新啓動服務器並使客戶端註銷。一旦註銷後,如果用戶登錄它會給出錯誤,因爲服務器沒有按時發佈。在我們的場景中,服務器需要時間來重啓,因爲這些東西(如備份)。如果用戶嘗試登錄,我希望向用戶通知網絡服務器狀態。無論如何flex中獲取服務器的狀態嗎?

是否有任何方法可以監視Flex端的服務器狀態。或者,請問JavaScript會幫助您找到服務器是否啓動?

另外我嘗試使用外部接口重定向到html頁面,但我不確定如何在服務器變爲活動狀態時再次自動將其重定向到swf文件。服務器停機時間未知(可能是2或5或10分鐘)

那麼最好的辦法是什麼。任何幫助將不勝感激。

回答

1

使用URLLoader您可以嘗試在服務器上下載文件並偵聽ioError或httpStatus。

private var testLoader:URLLoader; 
private var testRequest:URLRequest; 

... 

testRequest = new URLRequest("http://server/testFile"); 
testLoader = new URLLoader(request); 
testLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onStatus); 

private function onStatus(HTTPStatusEvent:event):void 
{ 
    //test the status, if the server is up, reconnect, else... 
    testLoader.load(testRequest); 
} 
+0

感謝您的回覆。但它會與https協同工作嗎? – Saravana 2011-03-25 06:52:01

+0

由於服務器已關閉,因此身份驗證被終止,因此您不需要進行此測試的https。 – Kodiak 2011-03-25 10:52:50

0

有趣的問題。當你的意思是重啓時,你的意思只是像Apache這樣的特定服務,或者像服務器的實際重啓?我問,因爲這意味着不同的情況。我不確定你在做什麼,但我會假設你正在重新啓動服務器。

這裏的一個問題是客戶端註銷,這是我們不想要的。我會做的是有第二個服務器,它的唯一目的是身份驗證和其他服務器的狀態。這是一個'中間人'的方法,此服務器不會將您註銷,但所有呼叫都會重定向到其他服務器。

從Flex的角度來看,你可以讓它調用'中間人'來查看狀態。根據您使用的技術(輪詢vs推送),您可以獲取所需的數據並向用戶顯示狀態。

+0

其實我們有兩種情況,但首先,我們停止我們的jboss服務器,做一些數據庫備份,重新啓動數據庫服務,我們再次啓動jboss server.so,當它遇到停機時間..我希望客戶通知關於停機時間並重新連接到同一個網站服務器恢復。在AIR中沒有任何接口flex提供像urlmonitor ..或者任何套接字偵聽器都沒有? – Saravana 2011-03-25 05:54:44