簡體   English   中英

使用 Laravel 中的推送器收聽消息

[英]listen to messages using pusher in Laravel

當我設置了按摩時,我需要在日志中獲取回聲消息 我可以收聽通過此代碼發送給我的消息嗎

<script src="https://js.pusher.com/4.1/pusher.min.js"></script>

<script type="text/javascript">
// Enable pusher logging - don't include this in production
Pusher.logToConsole = false;

var pusher = new Pusher('34b9ea6826c359c41c3f', {
    cluster: 'eu',
    encrypted: true
});

var channel = pusher.subscribe('Messages');
channel.bind('msgSend{{$id}}msgReceive{{Auth::user()->id}}', function(data) {
    $('.adsx').append(data.html);
    $("html,body").animate({scrollTop: $('.adsx')[0].scrollHeight}, 0);
});

我認為您需要通過artisan php artisan make:event addANameHere創建一個Laravel Event php artisan make:event addANameHere

之后,在事件內部,您需要添加一個頻道,例如

class addANameHere implements ShouldBroadcast {

use Dispatchable, InteractsWithSockets, SerializesModels;

public $user_id;

/**
 * Create a new event instance.
 *
 * @return void
 */
public function __construct($user_id)
{
    $this->user_id = $user_id;
}

/**
 * Get the channels the event should broadcast on.
 *
 * @return \Illuminate\Broadcasting\Channel|array
 */
public function broadcastOn()
{
    return ['alert-user-'.$this->user_id];
}

然后,您會收到這樣的消息:

var pusher = new Pusher("34b9ea6826c359c41c3f", {
    cluster: 'eu',
    encrypted: false,
});

var channel = pusher.subscribe('alert-user-{{ Auth::user()->id }}');
channel.bind('App\\Events\\addANameHere', function(data) {
    // Do whatever you want here ...
});

為了觸發該事件(發送消息時),您可以這樣調用事件類:

 \Event::dispatch(new addANameHere($user_id)); 

$user_id是您要查看該消息的用戶。

希望我能幫忙

這個方法很好但是我想補充一點。 如果您認為使用此方法,我認為要小心。 不要在刀片文件上打印明文$user_id變量。 因為您可能會遇到代碼安全問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM