2010-06-22 3 views
3

У меня есть пара вопросов относительно Web Sockets.Вопросы веб-сокетов

Последние версии ночного видения Firefox 4.0 поддерживают веб-сокеты. Так же работает Webkit (Chrome 4 + Safari 4/5). Предполагается, что Internet Explorer 9 будет предоставлять веб-сокеты в определенный момент в соответствии с Microsoft (до стабильного выпуска).

Во всяком случае, мои вопросы:

  • Я строю интерфейс администратора JavaScript, чтобы управлять сайтом. Должен ли я использовать веб-сокеты для связи клиент-сервер вместо XMLHttpRequest, если бы я сказал вам, что я делаю , а не, вам нужно заботиться о совместимости браузера?

  • Удастся ли использовать веб-сокеты быстрее, удалять и обновлять вызовы по сравнению с обычной ситуацией с XMLHttpRequest? Будет ли запрос более мгновенным?

  • Я знаю HTML5 navigator.online и window.addEventListener('offline', ...), но с веб-сокетами (после потери связи) могу ли я обнаруживать проблемы подключения более точно и быстрее? Я имею в виду, когда я отключу свое подключение к Интернету или заблокирую его с помощью своего брандмауэра, Firefox все еще, кажется, утверждает, что navigator.online - это true. С веб-сокетами, похоже, соединение с сервером будет потеряно мгновенно, таким образом, я могу более точно определить проблемы подключения?

  • Могу ли я поддерживать Web Sockets на стороне сервера с чистого PHP, так, что код переносим с другими веб-серверами (не необходимости установки каких-либо модулей Apache или сделать другие настройки). Я хотел бы распространить программное обеспечение на несколько мест без необходимости просить людей устанавливать всевозможные модули в их HTTPD или так далее.

Желаю вам ответить на максимально возможное количество вопросов. Я действительно интересуюсь ответами.

ответ

5

Я создаю интерфейс администратора JavaScript для управления веб-сайтом. Должен ли я использовать веб-сокеты для связи клиент-сервер вместо XMLHttpRequest, если бы я сказал вам, что мне не нужно заботиться о совместимости браузера?

Мне кажется, что вы хотите использовать WebSockets только ради него. Основной причиной использования WebSockets является то, что вы хотите вывести данные с сервера на клиент. Если ваше приложение не нуждается в этом, вы, вероятно, не должны использовать WebSockets.

Может ли веб-сокеты привести к более быстрым вызовам сохранения, удаления и обновления по сравнению с обычной ситуацией с XMLHttpRequest? Будут ли запросы более мгновенными?

Возможно, вы сэкономите некоторое время на обоих концах (клиент и сервер) из-за отсутствия заголовков. Но выигрыш, вероятно, довольно маленький.

с веб-гнездами (после потери связи), могу ли я обнаруживать проблемы подключения более точно и быстрее?

Да, событие будет немедленно срабатывать при закрытии WebSocket. Альтернативами были бы длительные опросы или периодические XHR. Или хранилище на стороне клиента.

Могу ли я поддерживать веб-сокетов на стороне сервера с чистым PHP, так, что код переносим с другими веб-серверами

Сначала я предлагаю вам прочитать this. WebSockets работают не очень хорошо синхронно. PHP и apache работают не очень хорошо асинхронно. Хотя therearesomeimplementations, многие из них устарели. Я лично использовал бы для этого другой язык, например ruby, python, java или server-side javascript. Просто потому, что языки лучше поддерживают асинхронную модель, а реализация WebSocket более сложна.

Протокол WebSocket в настоящее время по-прежнему представляет собой черновик, он может измениться. Также как a few weeks ago. Таким образом, ваш код может очень сильно сломаться.

Мой совет: не используйте WebSockets только ради него. Если у вас есть приложение, управляемое событиями в реальном времени, то это, вероятно, правильный выбор. Убедитесь, что вы понимаете, что такое WebSockets и что требуется на стороне сервера, а также в отношении приложений, управляемых событиями. Не используйте его для чего-либо, это слишком хрупко.

+1

Примечание: в настоящее время существует достойный сервер WebSocket, написанный на PHP: http://socketo.me/ – igorw

Смежные вопросы