相同的消息在pusher.js php中的发送者和接收者聊天中

时间:2019-05-14 19:01:08

标签: javascript php real-time pusher pusher-js

PusherJS 是我的新手,我正在使用PHP开发实时聊天应用程序。一切正常,但是当我按Enter键发送消息时,它会同时将其附加在发件人的盒子和收件人的盒子中。如何根据会话 user_id 进行区分。看到有相同的消息是发件人和收件人的邮箱: enter image description here

Real-Time.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);
});

1 个答案:

答案 0 :(得分:0)

您需要限制消息发件人接收广播的消息。 Pusher website上记录了如何执行此操作。

首先,您需要在连接到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的客户端接收消息。