laravel - Laravel 客户支持与第三方 Pusher 聊天
问题描述
我正在尝试制作客户支持图表,但在我的控制台中,出现了一些错误laravel
。Pusher
我无法理解。
和,
这就是我在Js
文件中的内容
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.d8649589aa930d275ffe,
cluster: process.env.ap2,
encrypted: true
});
解决方案
创建事件抽象类
namespace App\Events;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Queue\SerializesModels;
abstract class Event implements ShouldBroadcast
{
use SerializesModels;
protected $message;
protected $channels = [];
protected $event = '';
/**
* Get the channels the event should be broadcast on.
*
* @return array
*/
public function broadcastOn()
{
return $this->channels;
}
/**
* Broadcast to event
*/
public function broadcastAs()
{
return $this->event;
}
/**
* Broadcast with message
*/
public function broadcastWith()
{
return $this->message;
}
}
现在创建 PusherEvent 类
namespace App\Events;
class PusherEvent extends Event
{
/**
* Create a new event instance.
* @param $message
* @return $this
*/
public function setMessage($message)
{
$this->message = $message;
return $this;
}
/**
* Set pusher channels
*/
public function setChannels($channels)
{
$this->channels = $channels;
return $this;
}
/**
* Set pusher event
*/
public function setEvent($event)
{
$this->event = $event;
return $this;
}
}
现在像这样从 Laravel Side 的任何地方广播
try {
$messageEvent = new PusherEvent();
$messageEvent->setEvent('chatMessage')
->setChannels(['customerChat']);
$params['message'] = "Hello From Laravel";
event($messageEvent->setMessage($params));
} catch (\Exception $e) {
customLog($e->getMessage());
return false;
}
调用此代码后,您可以检查推送控制台。你会得到“来自 Laravel 的你好”
这是一个工作代码。我在我的项目中使用过。希望它可以帮助你。
从 js 列出
import Echo from "laravel-echo"
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'd8649589aa930d275ffe',
cluster: 'ap2',
encrypted: true
});
Echo.channel('customerChat')
.listen('chatMessage', (e) => {
console.log(e.message);
});
详情https://laravel.com/docs/5.6/broadcasting#concept-overview
推荐阅读
- javascript - 将 Reactjs 变量导入 Sass // 将 ReactJS 元素类名称分配给 Sass 变量
- node.js - 将带有数据的文档添加到 Firestore 的 Firebase 功能仅在执行它的第二次和后续时间有效,但不是第一次
- lua - 如何删除字符串中“(”之后的空格?
- angular - Angular Ionic Capacitor build prod:TypeError 无法读取未定义的“updateClassDeclaration”的属性
- node.js - TypeScript 中的 Mongoose post hook 类型错误
- apache - mod_rewrite 将 %26 转换为查询字符串中的 & 符号
- javascript - 使用 Google Script 在 BigQuery 中追加一条新记录
- swift - 在初始化程序上访问时声明惰性 var 和 let 有什么区别?
- java - 如何在 JMeter 中记录 JDBC 响应错误
- ckeditor - 如何禁用标题中的内联标记?