具有多个用户的服务器发送事件

时间:2013-04-19 03:34:22

标签: javascript php html5 server-sent-events

我正在尝试使用新的Server-Sent Events API编写聊天程序,但是,我一直无法弄清楚如何向不同的用户发送不同的事件。由于所有代码都来自一个PHP文件,我不确定向每个用户发送特定事件的最佳方式。您将给予的任何帮助将不胜感激。 (我在PHP和Javascript工作)

1 个答案:

答案 0 :(得分:4)

让我们说以下是你的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事件的消息,并且与第二个用户相同,它将获得发送给通知事件的消息。在上面的代码中,事件名称和消息是静态的,但您可以根据您的要求使其动态化。

希望这会帮助你。