События, отправляемые сервером нескольким пользователям


Я пытаюсь написать программу чата с помощью нового API событий, отправляемых сервером, однако у меня возникли проблемы с выяснением того, как отправлять разным пользователям разные события. Поскольку весь код происходит из одного PHP-файла, я не уверен, что лучший способ отправлять каждому пользователю только определенные события. Любая помощь, которую вы можете оказать, будет очень признательна. (Я работаю на PHP и Javascript)

Author: JasonMArcher, 2013-04-19

1 answers

Допустим, что следующее является вашим sender.php код (один php-файл)

echo "event: ping\n";
$msg1="This is first user";
echo 'data: {"msg": "' . $msg1 . '"}';
echo "\n\n";

echo "event: notify\n";
$msg2="This is second user";
echo 'data: {"msg": "' . $msg2 . '"}';
echo "\n\n";

Код javascript первого пользователя будет выглядеть следующим образом

var evtSource = new EventSource("sender.php");
evtSource.addEventListener("ping", function(e) {
var obj = JSON.parse(e.data);
var r_msg = obj.msg;

И код javascript второго пользователя будет выглядеть следующим образом

var evtSource = new EventSource("sender.php");
evtSource.addEventListener("notify", function(e) {
var obj = JSON.parse(e.data);
var r_msg = obj.msg;

Объяснение кода

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

Надеюсь, это вам поможет.

 4
Author: Prashant Sushir, 2013-04-24 05:59:33