Laravel 为一个用户广播作品
Laravel broadcast works for one user
我正在按照互联网上的一个简单示例进行通知跟踪。不幸的是,到目前为止,我设法让它只对一个用户有效。当我打开两个用户时,从 A 到 B 的消息有效,但从 B 到 A 的消息无效。
有人可以帮助我吗?
channels.php
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
bootstrap.js
window.Pusher = require('pusher-js');
import Echo from "laravel-echo";
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'some-key',
cluster: 'mt1',
forceTLS: true
});
global.js
var urlChannel = 'App.User.' + $('#user_logado_id').val();
window.Echo.private(urlChannel)
.notification((notification) => {
addNotificacao(notification);
});
向用户发送通知。
$user->notify(new NotificacaoPadrao($param));
我希望向所有用户发送通知。
那是因为第一个用户的频道是 App.User.1,第二个是 App.User.2。您应该创建一个供他们共享的频道。例如:App.Channel.1-2.
您可以同时传递发送者和接收者user_id
。所以在你的 channels.php
:
Broadcast::channel('App.User.{from_user_id}.{to_user_id}', function ($user, $from_user_id, $to_user_id) {
return (int) $user->id === (int) $from_user_id || (int) $user->id === (int) $to_user_id;
});
执行此操作时,请记住两个用户必须调用相同的频道名称。例如。如果您有用户 1
和 2
互相发送消息,则两者的 URL 频道应该是 'App.User.1.2' 而不是 'App.User.2.1'.
实际上有很多方法可以做到这一点,一种解决方案是我上面提到的,但这只适用于一对一消息,而不适用于群组消息。当你想发送群消息时,你应该创建 2 个表:channels
(id, name) 和 channel_users
(id, channel_id, user_id)。你的广播频道路线将是这样的:
Broadcast::channel('App.User.{channel_id}', function ($user, $channel_id) {
return ChannelUser::where('channel_id', $channel_id)->where('user_id', $user->id)->exists();
});
我正在按照互联网上的一个简单示例进行通知跟踪。不幸的是,到目前为止,我设法让它只对一个用户有效。当我打开两个用户时,从 A 到 B 的消息有效,但从 B 到 A 的消息无效。 有人可以帮助我吗?
channels.php
Broadcast::channel('App.User.{id}', function ($user, $id) {
return (int) $user->id === (int) $id;
});
bootstrap.js
window.Pusher = require('pusher-js');
import Echo from "laravel-echo";
window.Echo = new Echo({
broadcaster: 'pusher',
key: 'some-key',
cluster: 'mt1',
forceTLS: true
});
global.js
var urlChannel = 'App.User.' + $('#user_logado_id').val();
window.Echo.private(urlChannel)
.notification((notification) => {
addNotificacao(notification);
});
向用户发送通知。
$user->notify(new NotificacaoPadrao($param));
我希望向所有用户发送通知。
那是因为第一个用户的频道是 App.User.1,第二个是 App.User.2。您应该创建一个供他们共享的频道。例如:App.Channel.1-2.
您可以同时传递发送者和接收者user_id
。所以在你的 channels.php
:
Broadcast::channel('App.User.{from_user_id}.{to_user_id}', function ($user, $from_user_id, $to_user_id) {
return (int) $user->id === (int) $from_user_id || (int) $user->id === (int) $to_user_id;
});
执行此操作时,请记住两个用户必须调用相同的频道名称。例如。如果您有用户 1
和 2
互相发送消息,则两者的 URL 频道应该是 'App.User.1.2' 而不是 'App.User.2.1'.
实际上有很多方法可以做到这一点,一种解决方案是我上面提到的,但这只适用于一对一消息,而不适用于群组消息。当你想发送群消息时,你应该创建 2 个表:channels
(id, name) 和 channel_users
(id, channel_id, user_id)。你的广播频道路线将是这样的:
Broadcast::channel('App.User.{channel_id}', function ($user, $channel_id) {
return ChannelUser::where('channel_id', $channel_id)->where('user_id', $user->id)->exists();
});