Php 侦听器未在Laravel Pusher中触发
我一直在使用Pusher创建聊天系统。它的工作,但我只收到任何新的消息,从别人当我刷新页面,这是非常烦人的。我尝试了很多方法,但是没有一个能真正解决问题。我真的觉得这是一件我忽略了的超级简单的事情。如果有人能帮我,那太棒了 正如您看到的消息get send,用户可以成功连接并订阅: .envPhp 侦听器未在Laravel Pusher中触发,php,pusher,Php,Pusher,我一直在使用Pusher创建聊天系统。它的工作,但我只收到任何新的消息,从别人当我刷新页面,这是非常烦人的。我尝试了很多方法,但是没有一个能真正解决问题。我真的觉得这是一件我忽略了的超级简单的事情。如果有人能帮我,那太棒了 正如您看到的消息get send,用户可以成功连接并订阅: .env CACHE_DRIVER=file QUEUE_CONNECTION=sync SESSION_DRIVER=file SESSION_LIFETIME=120 MessageSent.php {
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120
MessageSent.php
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* User that sent the message
*
* @var User
*/
public $user;
/**
* Message details
*
* @var Message
*/
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user, Message $message)
{
$this->user = $user;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat');
}
public function broadcastAs()
{
return 'MessageSent';
}
}
{
public function __construct()
{
$this->middleware('auth');
}
/**
* Show chats
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('chat');
}
/**
* Fetch all messages
*
* @return Message
*/
public function fetchMessages()
{
return Message::with('user')->get();
}
/**
* Persist message to database
*
* @param Request $request
* @return Response
*/
public function sendMessage(Request $request)
{
$user = Auth::user();
$message = $user->messages()->create([
'message' => $request->input('message')
]);
broadcast(new MessageSent($user, $message))->toOthers();
return ['status' => 'Message Sent!'];
}
}
app.js
el: '#app',
data: {
messages: []
},
created() {
this.fetchMessages();
Echo.private('chat').listen('MessageSent', (e) => {
console.log(e);
this.sentMessages.push({
message: e.message.message,
user: e.user
});
});
},
methods: {
fetchMessages() {
axios.get('/messages').then(response => {
this.messages = response.data;
});
},
addMessage(message) {
this.messages.push(message);
axios.post('/messages', message).then(response => {
console.log(response.data);
});
}
}
});
created()。此外,无论我是否访问,都无法访问console.log InEcho.private()
ChatsController.php
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* User that sent the message
*
* @var User
*/
public $user;
/**
* Message details
*
* @var Message
*/
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user, Message $message)
{
$this->user = $user;
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('chat');
}
public function broadcastAs()
{
return 'MessageSent';
}
}
{
public function __construct()
{
$this->middleware('auth');
}
/**
* Show chats
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('chat');
}
/**
* Fetch all messages
*
* @return Message
*/
public function fetchMessages()
{
return Message::with('user')->get();
}
/**
* Persist message to database
*
* @param Request $request
* @return Response
*/
public function sendMessage(Request $request)
{
$user = Auth::user();
$message = $user->messages()->create([
'message' => $request->input('message')
]);
broadcast(new MessageSent($user, $message))->toOthers();
return ['status' => 'Message Sent!'];
}
}
另外,我在config/App.php中有未注释的App\Providers\BroadcastServiceProvider。好的,我修复了它。我发现这个问题是由于使用php-artisan-app:name
更改应用程序名称引起的。因此,我使用以下命令将其更改回App:php-App:name-App
好的,我修复了它。我发现这个问题是由于使用php-artisan-app:name
更改应用程序名称引起的。因此,我使用命令将其改回App:php-App:name-App