我遇到了一个奇怪的情况,其中使用Pusher和Laravel 5.6(重要的是指出一切正常工作),我收到的是双重通知(两者都在控制台上@浏览器中的开发人员控制台和Pusher应用程序中的调试控制台。)
我在我的应用程序中找不到任何加倍的推送代码,所以它让我感到很恼火。
以下是开发人员控制台代码的屏幕截图: Developer's console
此处来自Debug 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
的整个事件文件<?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中我只是取消注释了最后一部分(启动的那部分:“从'laravel-echo导入Echo ” ...“)。
答案 0 :(得分:0)
我注意到了一件事:
当将jQuery版本从3.3.1更改为1.12.4时,我从脚本中收到了一些错误,这是错误的(它只是另一个脚本),所以日志只显示一次...