Websocket или Long Polling (использующий AJAX), чтобы обнаружить Изменения в Базе данных, используя PHP

Мое исследование

Я провел часы, исследуя на всем протяжении Google и ТАК о Websockets и Long Polling, их за и против и т.д., но должен все же счесть ясное решением этого.

Я прочитал больше статей об этой теме тогда что-либо, что я когда-либо исследовал, включая их (чтобы назвать некоторых):

  1. Ajax/PHP - я должен использовать один длительный сценарий или опрос?
  2. Долго Получая голоса использования jQuery и PHP
  3. База данных опроса для изменений - Ajax/jQuery

Я также изучил следующее:

  1. http://cometdproject.dojotoolkit.org/
  2. http://socket.io/

Оправдание за этот Вопрос

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

Я поэтому надеюсь, что один из вас ТАК гении любезно предоставит ваше время, чтобы ответить на этот вопрос и поделиться вашими блестящими знаниями с остальной частью нас:-),

Мой вопрос

In short, Мой вопрос is really in the title; If I am trying to detect changes to a database record, is it better to use a websocket (socket.io) or long polling (jQuery and AJAX)?

Если ответ - websockets, то, пожалуйста, включайте основной пример, поскольку они действительно смутили меня, даже со всеми статьями о Google...

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


Дополнительная информация

Это, вероятно, не затронет окончательный ответ, но на всякий случай, я хотел бы объяснить, что я пытаюсь обнаружить и несколько вещей, которые, возможно, должны быть рассмотрены.

Эффективно, я пытаюсь обнаружить любые изменения сессии логина. Другими словами, если пользовательский символ изменился в <сильной> базе данных или , их перерыв закончился, то они вышлись из системы, и я хотел бы показать сообщение, сообщающее им об этом.

я не думаю, что это будет иметь значение, но окончательный код для этого должен будет подойти для SSL. Это легко с AJAX, но я незнаком с websockets стороной.

Первоначально, я написал систему, которая восстановила перерыв от сервера, используя JavaScript, и затем в перерыв секунды, это получит голоса сервера, чтобы видеть, истек ли перерыв . Я думал, что это было прекрасно, пока я не понял, что это только работало, когда время на компьютере клиентов соответствовало времени на сервере. Я поэтому должен был пересмотреть этот:-(

Anyway, I hope Мой вопрос is not too localised and I look forward to hearing your views and answers. Please don't waste your time helping me with the PHP database code, or the jQuery AJAX code, unless there are complex parts to it, as I am capable of writing this part myself and there are plenty of others on the Stack that need your help more than me. I am more interested in your opinions, and/or how to achieve this with websockets if they are the better solution :-).

11
nl ja de
вы можете, рассматривая использование базы данных советов, таким образом, можно запустить события в случае, если данные изменяются, и установите живую двунаправленную связь с клиентом, чтобы расширить необходимые данные с socket.io
добавлено автор eyurdakul, источник
О вашей проблеме перерыва в смелом: Используйте время UTC вместо времени клиента, чтобы достигнуть этого.
добавлено автор Salketer, источник
Я также хотел бы указать, что AJAX, голосующий, чтобы видеть, истекает ли сессия, требует некоторого внимания, поскольку каждый опрос, скорее всего, вновь откроет сессию и перезагрузит ее истечение...
добавлено автор Salketer, источник
Спасибо @Chris за ваш вход, но меня don' t действительно хочу заплатить за что-то, что я могу сделать сам
добавлено автор Ben Carey, источник
Испуганный Redis @eyurdakul не выбор, это ссылки на приложение в Базу данных SQL, которая также связывается в Настольное приложение, таким образом, я не могу двинуться в различное ядро базы данных:-(
добавлено автор Ben Carey, источник
Не точно ответ, но я получил действительно хорошее использование результатов pubnub.com It' s легкий осуществить и довольно быстро.
добавлено автор Chris, источник

2 ответы

Here's the best comparison I've seen regarding long polling and the WebSocket API:
http://www.websocket.org/quantum.html

Как в вышеупомянутой статье говорится, WebSocket API далеко превосходит долго опрос (или любая другая псевдодвунаправленная коммуникация), но одна оборотная сторона - то, что поддержка браузера все еще не вполне там (IE наконец начал поддерживать WebSocket API в IE10).

По сути, если вы ищете настоящее двунаправленное коммуникационное решение, используйте WebSocket API, когда это доступно, и отступите к Аяксу, долго голосующему или безотносительно метода кометы, который вы предпочитаете, когда это не.

Чтобы ответить на ваши вопросы, если вы только делаете случайный вопрос серверной стороны/DB (с термином "случайный", являющийся относительным и подвергающимся тестированию на вашей системе), тогда простые запросы Аякса должны быть прекрасными. Однако, если вы куете сервер с запросами каждые 10 секунд или меньше, затем использование WebSocket API определенно идеально.

Чтобы ответить на ваш последний вопрос, SSL на 100% доступен с WebSocket API. Просто используйте wss протокол вместо стандарта ws протокол, и вы там.

1
добавлено
Я соглашаюсь что документация относительно Гнезда. IO и т.п. скуден и не очень хорош, который является, почему я закодировал свое собственное решение PHP WebSocket с нуля. Основной принцип - то, что ваш Сценарий PHP постоянно бежит в некоторое время петле в фоновом режиме, прислушиваясь к сокетным соединениям. Вы могли легко добавить вопросы DB тому сценарию (или отдельному включенному сценарию), и послать данные клиентам по мере необходимости через сокетные соединения. Это отвечает на ваши вопросы?
добавлено автор HartleySan, источник
Я думал Гнездо. IO отступил к Аяксу, долго голосующему сначала, и если это wasn' t там, это использовало Вспышку. Возможно, I' m неправильно.
добавлено автор HartleySan, источник
Именно поэтому я изучил socket.io, поскольку этот будет отступление к другим методам, если websocket API не будет доступен. Проблема, которую я имел, хотя был то, что я не мог найти четкое объяснение того, как socket.io и node.js работали. Несмотря на многочисленные статьи о Google и Так, я ничего не мог счесть отдаленно ясным. Я знаю о wss протоколе, но не уверенный, как он работал бы с моим установленным SSL. Вы знаете о каких-либо четких объяснениях того, как обнаружить изменения в базе данных, используя websockets? Используя PHP и JavaScript, конечно?
добавлено автор Ben Carey, источник
Socket.io даже работает в ie6 и более поздних версиях и всех других популярных браузерах. Если html5 websocket don' t работа тогда это использует вспышку
добавлено автор Gaurav, источник

Вы написали частично "... Я пытаюсь обнаружить изменения отчета базы данных...". Нет ничего в websockets, разработанном, чтобы обнаружить изменение db; это просто не, для чего это.)

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

Я подразумеваю, что db был изменен некоторыми определенными действиями сценария. Я посмотрел бы на распространение каждого из тех действий, чтобы также вызвать websocket сделку.

0
добавлено
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

Верстка сайтов HTML/CSS/JS/PHP
Верстка сайтов HTML/CSS/JS/PHP
3 439 участник(ов)

Правила группы: напишите !rules в чате. Группа Вк: vk.com/web_structure Freelancer: @web_fl Веб Дизайн: @dev_design Маркетолог: @topmarkening Автор: @M_Boroda

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp