【发布时间】:2021-05-30 08:34:04
【问题描述】:
我已在推送器调试控制台中收到事件详细信息,但无法在浏览器中获得任何响应(无控制台日志)。先生/女士,请帮帮我
我在 app.js 中编写 Echo
created () {
window.Echo.channel('privateChat')
.listen('ChatEvent', (e) => {
console.log(e);
});
}
事件广播功能
public function sendMessage(Request $request)
{
$user = Auth::user();
$message = new Message();
$message->user_id = $user->id;
$message->message = $request->message;
$message->friend_id = $request->friendID;
$message->my_id = $user->id;
$message->save();
// broadcast(new MessageSent($user, $message))->toOthers();
event(new ChatEvent($request->friendID));
return ['status' => 'Message Sent!'];
}
广播服务提供商
class BroadcastServiceProvider extends ServiceProvider
{
public function boot()
{
Broadcast::routes();
Broadcast::routes(['middleware' => ['jwt.auth']]);
require base_path('routes/channels.php');
}
}
chatEvent.php 中的事件
class ChatEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $friendID;
public function __construct($friendID)
{
return $this->friendID = $friendID;
}
public function broadcastOn()
{
return new PrivateChannel('privateChat');
}
}
channels.php 中的路由
Broadcast::channel('privateChat', function () {
return Auth::check();
});
aap/js/bootstrap.js 中的 Laravel-Echo 配置
import Echo from 'laravel-echo';
window.Pusher = require('pusher-js');
window.Echo = new Echo({
broadcaster: 'pusher',
key: process.env.MIX_PUSHER_APP_KEY,
cluster: process.env.MIX_PUSHER_APP_CLUSTER,
forceTLS: true,
auth: {
headers: {
Authorization: 'Bearer ' + localStorage.getItem("token")
},
},
});
版本
"laravel-echo": "^1.10.0",
"laravel-mix": "^6.0.6",
"popper.js": "^1.12",
"pusher-js": "^7.0.3",
"vue": "^2.5.17",
"laravel": "8",
【问题讨论】:
-
请发布你的 Laravel Echo 配置。
-
``` 从 'laravel-echo' 导入 Echo; window.Pusher = require('pusher-js'); window.Echo = new Echo({ 广播器:'pusher',key:process.env.MIX_PUSHER_APP_KEY,集群:process.env.MIX_PUSHER_APP_CLUSTER,forceTLS:true,auth:{ headers:{ Authorization:'Bearer' + localStorage.getItem( "令牌") }, }, }); ```
-
Uzair Riaz 先生,对不起先生,我无法以正确的格式发布它,所以我将配置文件放入我的问题部分,请检查
-
您能否尝试在 channels.php 中返回
true而不是Auth::check(),以检查这是否是频道身份验证问题?
标签: php laravel vue.js pusher laravel-echo