У меня проблема с запуском как флеш-сокета, так и использования Ajax для загрузки страниц. Оба отлично работают отдельно. Я могу просматривать свой сайт с помощью вызовов Ajax или отправлять / получать сообщения через сокет.
Однако, когда сокет по какой-то причине подключен, Ajax-вызовы начинают помещаться в очередь и фактически никогда не заканчиваются, пока я не остановлю сокет. Если я отсоединяюсь от сокета или закрываю сокет на стороне сервера, то вызов Ajax немедленно завершает работу и загружает страницу. Вызов Ajax никогда не прерывается, он просто ждет вечно, пока я не закрою сокетное соединение.
В JavaScript я использую функцию jQuery $.getJSON()
для загрузки страниц (которые я считал асинхронными вызовами).
Во Flash я использую базовый класс сокетов ActionScript 3:
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);
EDIT:
Я подтвердил, что нет HTTP-запрос выполняется. Это на самом деле ставится в очередь браузером по некоторым причинам. Я также заметил, что он не только ставит в очередь запросы Ajax, но также обновляет браузер. Если я нажму кнопку обновления, она тоже навсегда зависнет.
РЕДАКТИРОВАТЬ 2:
На самом деле, я проверял порт 80, когда должен был проверять порт 443. На самом деле, на сервер делается запрос, он просто зависает по какой-то причине. Это заставляет меня поверить, что есть проблема с сокетом (который использует PHP), который заставляет процессор PHP ставить запросы в очередь, или, возможно, Apache ставит запросы в очередь, поскольку видит, что сокет использует PHP. Я до сих пор не уверен, почему дополнительные запросы к процессору PHP не выполняются до тех пор, пока сокет не будет закрыт, но я уверен, что это как-то связано с тем фактом, что сокет PHP находится в всегда открытом состоянии и блокирование других запросов.