【问题标题】:Pusher doubles logs in console and app dashboardPusher 将控制台和应用程序仪表板中的日志加倍
【发布时间】:2018-06-11 13:47:29
【问题描述】:

我遇到了一个奇怪的情况,在 Laravel 5.6 中使用 Pusher(重要的是要指出一切正常),我收到双倍通知(都在控制台 @浏览器中的开发者控制台和 Pusher 应用程序中的调试控制台)。

我在我的应用程序中找不到任何双倍的推送器代码,所以这让我有点恼火。

这是来自开发者控制台的代码截图: Developer's console.

这里来自调试控制台:Debug Console

另外,我附上代码中最重要的部分:

//view.blade.php

<script type="application/javascript">
$(document).ready(function() {

    Pusher.logToConsole = true;
    var pusher = new Pusher('xxxxxxxxxxxxxxxxxxxx', {
        cluster: 'eu',
        encrypted: true
    });

    var channel = pusher.subscribe('update-date-channel');
    channel.bind('App\\Events\\Event', function(data) {
        $(".list-group").find("#" + data.updatedItemId).html(data.updatedDate);
    });

})

// 控制器(我通过它发送更新的值)

public function addbid(Request $request)
{
    /*
    ...
    */
    event(new Event($updatedDate = $newDate->toArray("date")["formatted"], $request -> id));
    Session::flash('message', "Bid added succesfully!");
    return Redirect::back();
}

// 这里是来自 App\Events\Event 的整个 Event 文件

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class Event implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;

public $updatedDate;
public $updatedItemId;

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

/**
 * Get the channels the event should broadcast on.
 *
 * @return \Illuminate\Broadcasting\Channel|array
 */
public function broadcastOn()
{
    return ['update-date-channel'];
}
}

在 resources/assets/js 我没有更改 app.js 中的任何内容,在 bootstrap.js 中我只是取消了最后一部分的注释(开头的部分:“import Echo from 'laravel-echo '...")。

【问题讨论】:

  • 这是因为您订阅了同一个频道两次(您可以在浏览器日志中看到这一点)。您可以尝试在var channel = pusher.subscribe('update-date-channel'); 之前放置一个日志行,以检查它没有被调用两次。搜索对subscribe() 的其他调用也是值得的。
  • @WillSewell 好吧,但是我正在查看所有已编辑的文件,我在任何地方都看不到双重订阅...仅在第一篇文章中提供的 view.blade.php 中,有什么想法吗?顺便说一句,感谢您对这个话题感兴趣:)

标签: javascript php laravel pusher


【解决方案1】:

我注意到一件事:

当将 jQuery 版本从 3.3.1 更改为例如 1.12.4 时,我收到了来自 pusher 上方的脚本的一些错误(它只是关于另一个脚本),所以日志只显示一次......

【讨论】:

    猜你喜欢
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多