2013-06-03 2 views
1

Мы планировали создать приложение для чата на основе HTML5 с использованием технологии Websockets.HTML5 Websockets для приложения Realtime Chat?

Так что мой вопрос:

  1. Какие браузеры, которые поддерживают WebSockets изначально в настоящее время на сегодняшний день?

  2. Если браузер не поддерживает его, то какой возможный изящный резерв?

  3. Есть ли полипол, которые могут вам помочь?

С уважением,

+2

все основные поддержки браузера веб-сокеты http://caniuse.com/websockets и увидеть открыть ссылку в браузере вы хотите проверить http://websocketstest.com/ –

+0

http://html5please.com/#Websockets – Orangepill

ответ

12

Какие браузеры, которые поддерживают WebSockets изначально в настоящее время на сегодняшний день?

Как указывалось в предыдущих ответах.

См:

Если браузер не поддерживает его, что такое возможно изящный запасной вариант?

Если в режиме реального времени веб-сервер поддерживает только WebSockets, то следующий лучшим вариантом является использование web-socket-js это на базе флэш-polyfill, который создает WebSocket объект которого будет взаимодействовали с теми же способами, как родного WebSocket объекта ,

Дополнительные откаты - , которые должны поддерживаться вашим веб в реальном времени сервера и управления клиентской библиотекой JavaScript это обеспечивает - являются, упорядоченный лучшего к худшему:

  1. EventSource - Одиночная потоковое соединение от сервера -> клиент. Двунаправленная связь может быть достигнута с использованием второго HTTP-запроса.
  2. HTTP Streaming - использует два соединения для имитации двунаправленной связи. Сообщения «перетаскиваются» поверх постоянного сервера «потокового» подключения -> клиент
  3. HTTP-протокол Long-Polling - также использует два соединения. Тем не менее, сервер -> клиент открывается, удерживается до тех пор, пока не появится новое сообщение или не произойдет тайм-аут. Затем он закрывается, и если какие-либо данные были установлены, они будут отправлены в ответ.
  4. Стандартный HTTP-опрос - гораздо менее эффективный и из-за большого количества потенциально пропавших без вести запросов. Однако, если обновления, предлагаемые вашим приложением, происходят не так часто, и не имеет значения, являются ли данные «устаревшими» на время между запросами на опрос, то это может быть приемлемым решением. Здесь нет «толчка».

Варианты 1. и 2. могут быть достигнуты различными способами в зависимости от веб-браузера. Это то, что делает их «хаками». Теперь у нас есть WebSocket для двунаправленной связи и EventSource (события, отправленные сервером), которые очень похожи на потоки HTTP с дополнительным преимуществом, поддерживающим автоматическое пересоединение.

Есть ли полипол, который может помочь?

Да, см. web-socket-js как указано выше.

Для PHP ваш лучший выбор - Ratchet. Он не работает в Apache, поэтому он не страдает от тех же ограничений - он не был построен с учетом парадигмы Request/Response.

Наиболее часто используемые решения я вижу прямо сейчас:

  • Faye - Node.js и рубин
  • socket.io - Node.js и порты доступны для различных других языков
  • SockJS - Эрл, node.js, ruby ​​
  • SignalR - .NET
  • XSockets -.NET

Для других вариантов - включая хостинговые услуги, как Pusher (которые я работаю на момент написания) - посмотрите на этой realtime web tech guide, который я, поддерживая (и принимающий вклады в стороне).

1

Как было отмечено NullPoiиteя и Orangepill, вы можете посмотреть на caniuse и html5please. Итак, это была ваша первая точка/

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

Ну, это не вопрос, но вы должны рассмотреть (потому что вы отметили его под php). Websockets имеют активное соединение, пока пользователь активен. PHP не подходит для этого, ваш сервер будет вливаться в соединение, а также человек с плохим значением может легко убедиться, что сервер затоплен.

Это потому что, если вы этого хотите, вам нужно установить ограничение времени на 0 (так никогда). Таким образом, ваш сервер будет складывать запросы до тех пор, пока они не будут заполнены. (как он действует как соединение, я не знаю).

Если вы не используете websockets и PHP, вы должны посмотреть на pusher. Я использовал эту услугу для своего чата. Он работает как волшебство и отнимает у вас все трудные вещи.

Я надеюсь, что информация поможет вам разработать Nive приложение

+0

Pusher заплачен, и я искал что-то, что помогло бы мне разобраться со всем на моем сервере. Итак, да, я в настоящее время смотрю на socket.io –

+0

И да, я думаю, что PHP закончит поднимать всевозможные проблемы, поэтому мне было интересно, есть ли какой-либо способ предотвратить потерю памяти, что-то вроде услуги толкателя? –

+0

Что вы можете сделать, это использование веб-узлов и опросов. Не идеально, но вы используете websocket для связи, и опрос отправляет сообщение каждый час, если не получено, соединение будет опустошено. Опять не идеальный. PHP не предназначен для такого общения – MKroeders

0

Faye удивительно, мне нравится Pusher, но я хотел, чтобы что-то было легко и просто реализовать, что я могу управлять на своем собственном сервере. Который после начала изучать Node.js, я был очень впечатлен Faye. Он обеспечивает большую поддержку websockets, http, но мне нравится, что вы можете использовать протокол Bayeux.

http://faye.jcoglan.com/node.html

0

, если вы не будете строить его ради обучения вы можете использовать node.js это хорошее место, чтобы начать также вы можете найти много ресурсов ведущих вам начать с нуля ,

Но для меня я предпочитаю использовать сервер веб-сокетов PHP для общения и javascript для clent-side с помощью official PHP site вы можете начать сборку своего веб-сервера сокетов.

+0

Вы действительно думаете, что PHP - это хороший способ сделать сервер WebSocket с проблемами памяти и все такое? –

+0

определить (проблема с памятью), пожалуйста, это зависит от типа приложения, которое вы хотите создать –

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