- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
bối cảnh:一位客户可以将一位客户推荐给另一位客户。每个推荐都需要存储在数据库表行中。收到推荐的客户应该会看到事件通知。
创建一个新的推荐并发送事件:
$totalRefers = [];
foreach ($array as $to) {
$refer = new ClientReferral;
$refer->user_id = $user_id;
$refer->by = $by;
$refer->to = $to;
$refer->save();
array_push($totalRefers, $refer);
ReferralSent::dispatch($refer); // Here is the Event
}
return response()->json([
'status' => 'Success',
'message' => 'Client referred successfully to selected professionals.',
'data' => $totalRefers
], 200);
事件broadcastOn()
phương pháp:
public function broadcastOn() {
return new PrivateChannel('referral.' . $this->referral->id);
}
channel :
Broadcast::channel('referral.{id}', function ($user, $id) {
// let's say it's true for the time being
trả về giá trị đúng;
});
请求是一个 Ajax POST,所以在成功回调中:
console.log('referral created');
res.data.forEach(function(entry) {
// window.custom.userId is the authenticated user ID:
if (entry.refer_to == window.custom.userId) {
window.Echo.private('referral.' + entry.id).listen('ReferralSent', ({data}) => {
console.log('You have received a new referral');
});
}
});
当前代码的问题是接收者无法订阅此 channel ,因为事件是动态创建的,而且我无法将 channel 名称设为静态,因为推荐是在运行时传入的。
接收者如何订阅和监听动态事件?
根据这个逻辑,我想获取特定推荐及其数据,以 HTML 格式在通知托盘中显示。
我怎样才能做到这一点?
câu trả lời hay nhất
问题中显示的事件仅广播到该特定推荐实体 的 channel 。但是,订阅该 channel 的接收者应该接收到所有引用他们的推荐实体的事件。
不是为推荐实体本身创建 channel 上下文,而是发布到为接收推荐的người dùng指定的 channel 。我猜测 $referral->to
包含该用户的 ID:
public function broadcastOn()
{
return new PrivateChannel('referral.' . $this->referral->to);
}
根据接收推荐的用户 ID 更新 channel 以授权当前用户:
Broadcast::channel('referral.{refereeId}', function ($user, $refereeId) {
return $user->id == $refereeId;
});
并且,在客户端,在同一个 channel 上收听:
window.Echo.private('referral.' + window.custom.userId)
.listen(e => console.log(e.referral));
因为我们不再监听特定的推荐 ID,所以我们可以在页面加载期间而不是在 AJAX 响应回调中初始化 Echo 订阅者。
广播事件旨在对正常请求/响应周期(包括 AJAX 请求)之外的实时操作有用。对于这个问题,我们希望在页面加载时(而不是在特定请求之后)为每个 客户启动 Echo 监听器,以便他们可以在其他客户向他们推荐客户时随时收到通知。
流程如下所示:
关于php - Laravel Echo 私有(private) channel 与 Laravel echo 服务器 |雷迪斯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52148206/
Tôi đã cài đặt trình soạn thảo, nhưng khi xem tài liệu của Laravel, tôi đang gặp khó khăn với: "Hãy đảm bảo rằng bạn có thư mục ~/.composer/vendor/bin trong PATH để chạy laravel trong thiết bị đầu cuối của bạn
Tôi muốn chèn khóa ngoại trong quá trình di chuyển thay vì thêm giá trị khóa ngoại vào 1 `public function up() { Schema::table('users', function (Bluepri
Đây là một lỗi mở trên Github đối với gói laravel-mongodb nhưng không có gì xảy ra. Có lẽ ai đó biết giải pháp ..? Khi được chọn làm một tài liệu, ngày sẽ xuất hiện dưới dạng Date{ "_id": "5ca
Tôi có một ứng dụng Laravel mà tôi sử dụng làm API cho một ứng dụng lớn hơn được xây dựng trong Joomla. Tôi thực sự thích sử dụng Laravel và quyết định sử dụng Eloquent trong ứng dụng Joomla của mình. Tôi đã đỗ ở La
Tôi có hai ứng dụng Laravel sử dụng cùng một cơ sở dữ liệu và do đó có cùng một người dùng và mật khẩu. Giả sử các ứng dụng được gọi là A và B. Nếu người dùng đăng nhập vào A, tôi có thể làm gì để họ tự động đăng nhập vào B? Vì vậy nếu họ đăng nhập vào A thì khi họ
Tôi đang xem mã nguồn của Laravel trên github và nhận thấy rằng có một laravel/laravel và một laravel/framework. Cả hai đều liên kết đến cùng một tài liệu trên trang web và trạng thái của Laravel.
Tôi đang cố cập nhật laravel từ phiên bản 5.4 lên 5.5. Tôi đã làm mọi thứ theo hướng dẫn trong hướng dẫn Laravel: https://laravel.com/docs/master/upgrade
Tôi đang cố gắng thêm một số giá trị mới cho mỗi người dùng từ foreach nhưng vì tôi đang sử dụng get nên giờ tôi không thể sử dụng phân trang trong phản hồi, nhưng tôi cũng cần thêm các giá trị này cho mỗi người dùng. Có ý tưởng gì không? thống kê chức năng công cộng
Tôi có một liên kết xóa tới nút hủy $task->id ,'method'=>'DELETE'] ) }}"> xóa đây là chức năng hủy chức năng công khai destroy($i
Tôi muốn tải lên một tập hợp tệp trong Laravel nhưng tôi không chắc chắn về đường dẫn và đối tượng lưu trữ của tệp. Tám bây giờ dữ liệu được lưu trữ nhưng trong trường hợp của tôi đường dẫn là #. Trong hình ảnh bên dưới, tôi có dữ liệu được gửi từ phía trước (Vuejs và tôi đang sử dụng vue-upload-com
Tôi gặp sự cố khi tải trước trong Laravel khi sử dụng bảng tổng hợp ba chiều. Các cài đặt cơ sở dữ liệu như sau: +-------+--------+-------+-------------+ giao dịch | địa điểm |
Tôi đang làm việc trên một dự án blog laravel 5.7. Tôi muốn bình luận về một bài viết. Tôi cần thực hiện điều này: trước khi đăng nhập, tôi có thể nhập bất kỳ nội dung nào vào vùng văn bản nhận xét trước khi gửi nhận xét (điều này tất nhiên sẽ bị phần mềm trung gian xác thực chặn) và sau đó tôi được chuyển hướng đến trang đăng nhập sau khi đăng nhập
Tôi đang cố gắng tạo một URL tạm thời cho một tệp trong ứng dụng của mình. Tôi có thể tải tệp lên nhóm S3 và tôi có thể sử dụng phương thức \Storage::temporaryUrl($this->url, now()->addHo
Điều gì xảy ra nếu một mô hình Eloquent được chuyển làm đầu vào cho một công việc được xếp hàng đợi của Laravel, nhưng mô hình đó bị xóa trước khi công việc đó chạy trong hàng đợi? Ví dụ: tôi đang sử dụng Laravel 5.2 để xây dựng một trang web thương mại điện tử nơi khách hàng có thể
Tôi đang cố chạy thử nghiệm đơn vị nhập dữ liệu vào cơ sở dữ liệu trước khi chạy thử nghiệm. Tôi đã xác định một phương pháp thiết lập chạy cho mọi trường hợp thử nghiệm mà tôi không muốn. Phương pháp thiết lập thực hiện tốt mà không gặp vấn đề gì. Điều tôi muốn là nhập dữ liệu vào cơ sở dữ liệu một lần và sau đó được sử dụng bởi tất cả các trường hợp thử nghiệm. Địa điểm
ngày tốt lành. Ví dụ: tôi có một mô hình Mọi người có trường/thuộc tính: tên họ và mô hình cũng có phương thức này: public function FullName() { return "{$
Tôi không thể hiểu cách hoạt động xác thực sự tồn tại của Laravel khi kiểm tra các bản ghi hiện có trong cơ sở dữ liệu. Ví dụ: liệu yêu cầu POST có user.id = 1 có thể sử dụng quy tắc xác minh hay không: 'id' => 'exists:users'
Tôi đang sử dụng Laravel 5.2 để tạo một trang web, điều tôi muốn làm là CHÈN 3 hàng cùng lúc, 3 hàng mới phải chứa dấu thời gian create_atupdate_at. chèn bằng phương thức Trình tạo truy vấn, đúng vậy
Tôi đang cố chuyển một số dữ liệu tới Bộ điều khiển của mình thông qua Hành động href. Tôi không biết tại sao, nhưng laravel sử dụng phương thức GET để truyền dữ liệu, nhưng tôi cần POST thay vì GET. Tôi thực sự không hiểu tại sao
Tôi gặp sự cố khi thư mục lưu trữ của tôi trên máy chủ đặt lại 2 ngày một lần. Vì vậy, tôi đã chạy các lệnh này và đã sửa được: sudo chown -R $USER:www-data storage sudo chown -R $U
Tôi là một lập trình viên xuất sắc, rất giỏi!