我在運行Flash套接字和使用Ajax加載頁面時遇到問題。兩者都單獨工作。我能夠使用Ajax調用瀏覽我的網站,或者我可以通過套接字發送/接收消息。Ajax呼叫在連接到Flash插座時排隊
但是,當由於某種原因連接套接字時,Ajax調用開始似乎被放入隊列中,直到我停止套接字時纔開始實際完成。如果我從套接字斷開連接,或關閉服務器端的套接字,則Ajax調用立即完成並加載頁面。 Ajax調用永遠不會超時,直到我關閉套接字連接爲止。
在JavaScript中,我使用jQuery的$.getJSON()
函數來加載頁面(我認爲這是異步調用)。
在Flash中,我使用的是基本的ActionScript 3 Socket類:
this._socket = new Socket();
this._socket.addEventListener(Event.CONNECT, onConnectHandler);
this._socket.addEventListener(Event.CLOSE, onCloseHandler);
this._socket.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
this._socket.addEventListener(ProgressEvent.SOCKET_DATA, onDataHandler);
this._socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityErrorHandler);
編輯:
我驗證過沒有 HTTP請求正在取得進展。事實上,由於某種原因,瀏覽器正在排隊。我還注意到,它不僅會排隊Ajax請求,還會排隊刷新瀏覽器。如果我點擊刷新按鈕,它也會永久掛起。
編輯2:
其實,我被檢查的80端口時,我應該已經檢查端口443上有實際的請求正在向服務器發出,它只是掛了一些原因。這導致我相信,使用PHP的套接字(使用PHP)會使PHP處理器排隊請求,或者Apache正在排隊請求,因爲它看到套接字正在使用PHP。我仍然不確定爲什麼在處理程序關閉之前沒有完成對PHP處理器的附加請求,但是我確信它與PHP套接字始終處於打開狀態有關,阻止其他請求。