0

我是PusherJS的新手,正在使用 PHP 开发一个实时聊天应用程序。一切正常,但是当我按 Enter 发送消息时,它会将其附加到发件人的框中,也附加到收件人的框中。我如何根据sessionuser_id来区分它。看到有相同的消息是发送者和接收者的盒子: 在此处输入图像描述

实时.php:

$options = array(
    'cluster' => 'ap2',
    'useTLS' => true
);
$pusher = new Pusher\Pusher(
    'c575a7********edb87d',
    '8fee27********57fdd2',
    '7***6*',
    $options
);
$pusher->trigger('channel', 'event', $data);

.js 文件:

var pusher = new Pusher('c575a76********db87d', {
    cluster: 'ap2',
    forceTLS: true
});
var channel = pusher.subscribe('channel');
channel.bind('event', function(data) {

    var msg_template = ``; //<-- Just removed template it's simple HTML

    $("ul#messages").append(msg_template);
});
4

1 回答 1

0

您需要限制消息发送者接收广播消息。Pusher 网站上记录了如何执行此操作。

首先,您需要在连接到 Channels 时存储 SocketID:

var pusher = new Pusher('APP_KEY');
var socketId = null;
pusher.connection.bind('connected', function() {
  socketId = pusher.connection.socket_id;
});

一旦找到它,您就可以在发送到服务器的事件中使用它:

data: {
      id: 'some_id',
      updated_value: 'some_value',
      socket_id: socketId // pass socket_id parameter to be used by server
    }

然后,这将阻止具有该 socketId 的客户端接收消息。

于 2019-05-15T10:05:24.160 回答