Как сервер может общаться с двумя клиентами одновременно (JavaScript, HTML, PHP)? - PullRequest
1 голос
/ 11 апреля 2011

Я получил задание, и для этого я мог бы использовать любую технологию www, такую ​​как HTML, JavaScript, PHP и т. Д. Мне очень жаль говорить, что я не изучал ни одну из этих технологий. Поэтому я взял несколько уроков и пролистал их в поисках ответов.

Я нашел решение для многих проблем, но одна проблема еще не решена. Вот это:

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

Ни один из учебников по PHP не показал мне, как это сделать. Все они говорили о связи между одним клиентом и сервером.

Пожалуйста, помогите. Покажи мне способ сделать это. Благодарю.

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

В настоящее время, не возвращаясь к передовым (и, возможно, хакерским / ненадежным) методам, ваш PHP-сервер не может инициировать обмен данными со страницей, уже загруженной в веб-браузер. Это результат работы протокола HTTP.

Один из способов решить эту проблему - опросить принимающую сторону данных. Что-то вроде шаблона публикации-подписки.

Один из способов сделать это будет:

  1. Один клиент отправляет данные на сервер с помощью HTTP-запроса (XHR или AJAX), в котором указывается цель для этих данных (другой клиент).
  2. Сервер сохраняет эти данные в постоянном хранилище (локальный файл, база данных и т. Д.).
  3. Второй клиент периодически отправляет запрос на сервер, спрашивая, есть ли какие-либо новые данные для его использования. Это можно сделать с помощью setInterval и XHR в JavaScript.

Я бы посоветовал вам взглянуть на:

http://en.wikipedia.org/wiki/Publish/subscribe

А также, для передового способа сделать это, проверьте Socket.IO:

http://socket.io

0 голосов
/ 11 апреля 2011

Возможно, вы захотите Google на "php chat server".Создание сервера чата - это простой способ начать.

http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based-chat-application/

http://code.jenseng.com/jenChat/

...