我正在尝试使用新的Server-Sent Events API编写聊天程序,但是,我一直无法弄清楚如何向不同的用户发送不同的事件。由于所有代码都来自一个PHP文件,我不确定向每个用户发送特定事件的最佳方式。您将给予的任何帮助将不胜感激。 (我在PHP和Javascript工作)
答案 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事件的消息,并且与第二个用户相同,它将获得发送给通知事件的消息。在上面的代码中,事件名称和消息是静态的,但您可以根据您的要求使其动态化。
希望这会帮助你。