Самый эффективный способ сделать чат-приложение в реальном времени
Я создаю сайт, на котором пользователи могут общаться друг с другом, и я хотел бы сделать чат как "живой", насколько это возможно. Я читал в этом вопросе, что длительный опрос, вероятно, является самым эффективным способом создания веб-приложения реального времени,
Но это было в 2010 году, и с тех пор, как Интернет менялся так быстро, что я хотел спросить, сегодня все по-другому? Являются ли WebSockets лучшим вариантом сейчас, длинный опрос по-прежнему является лучшим, или есть ли еще лучшее решение, с которым я не сталкивался?
Ответы
Ответ 1
Я бы начал здесь: http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/
Это достаточно просто, чтобы понять и использовать те же технологии, которые вы уже используете.
Вы можете сделать это лучше, используя длинный опрос, как показано здесь: http://www.nolithius.com/game-development/comet-long-polling-with-php-and-jquery
или веб-сокеты: http://code.google.com/p/jquery-graceful-websocket/
Ответ 2
Websockets более "эффективны", чем длительный опрос, в том смысле, что опрос по-прежнему зависит от HTTP. Это означает, что все служебные данные HTTP, включая заголовки, файлы cookie и т.д., Передаются, тогда как веб-порты не отправляют эту дополнительную информацию.
В этом сравнение между длинным опросом и веб-сайтами, вывод заключается в том, что длительный опрос близок к возможностям реального времени, предоставляемым веб-сокетами, но существует тот короткий обязательный период между отправкой ответа и созданием нового запроса, в котором информация задерживается.
Если вы решите внедрить решение для веб-рассылки, вы должны учитывать длительный опрос как альтернативный вариант, так как существует много браузеров, которые еще не поддерживают веб-сайты.
Ответ 3
Оформить заказ Socket.io. Лучше всего, так как нарезанный хлеб!: -)
Что такое Socket.IO?
Socket.IO стремится сделать приложения в реальном времени возможными в каждом браузере и мобильное устройство, размывание различий между различными транспортных механизмов. Он без помощи в реальном времени 100% в JavaScript.
Поддерживаемые транспорты
Чтобы обеспечить связь в реальном времени в каждом браузере, Socket.IO выбирает наиболее способный транспорт во время выполнения, не затрагивая API.
WebSocket
Adobe® Flash® Socket
Длительный опрос AJAX
Многопоточная потоковая передача AJAX
Forever Iframe
Опрос JSONP
Поддерживаемые браузеры
Desktop
Internet Explorer 5.5 +
Safari 3 +
Google Chrome 4 +
Firefox 3 +
Opera 10.61 +
Мобильный
iPhone Safari
iPad Safari
Android WebKit
WebOs WebKit
Ответ 4
Если у вас есть ASP.Net в фоновом режиме, тогда SignalR (http://signalr.net) - действительно хороший выбор. Он построен именно для такого рода работ - действительно, обычное примерное приложение является чат-приложением.
Под капотом SignalR использует любую лучшую технологию, которую поддерживает текущая комбинация клиент/сервер. Если WebSockets поддерживается, он будет использовать это, в противном случае он изящно изнашивается для ряда других методов, включая длительный опрос.
Ответ 5
Попробуйте веб-сокеты HTML5: HTML5 Demo: веб-сокет
Если вы не хотите, чтобы он совместим со старыми браузерами. Если бы тогда я просто использовал java или flash.
Ответ 6
Просто для полноты я также хотел бросить WebRTC.
Хотя эта технология еще не полностью стандартизирована и поддерживается только в самых последних версиях браузера (поддержка браузера), это позволит вам получить реальную одноранговый чат реального времени.
Ответ 7
В моем опыте использование node.js и socket.io - наиболее эффективный способ создания чат-приложения в настоящее время. Легко имплицировать, и это очень мощно. Вы строите почти очень. используя их. Если вы используете экспресс-лимузин, то процесс разработки будет очень простым.
Ответ 8
Протокол WebSocket предпочтительнее, поскольку он работает на одном TCP-соединении между клиентом и сервером и не зависит от цикла ответа HTTP-запроса.
для лучшего понимания см. это
http://hungtran.co/long-polling-and-websockets-on-nodejs/