想在Laravel中实现Web套接字

问题描述 投票:9回答:4

我想使用Web套接字在Laravel中实现Web通知。我试过推。这很容易,但它是付费套餐。我也尝试过redis和socket.io,我必须安装地平线。我正在运行Windows,根据我所读到的有关地平线的内容,我无法在Windows上安装它。

所以我对推送通知非常困惑。我正在尝试至少一周但尚未找到任何解决方案。我的前端是Angluar 5 / android,后端是Laravel 5.6。

你能否建议我实施推送通知的任何好主意?

laravel push-notification redis laravel-5.6
4个回答
5
投票

你一直在使用推杆,所以我假设你知道如何使用事件。

我推荐你laravel-echo-server。它很容易使用,内置api。

这是一个从头开始的laravel-echo项目的新例子。设置项目后。

如果你尚未安装它,你将需要predis

composer require predis/predis
redis-server /usr/local/etc/redis.conf
  1. 运行npm install -g laravel-echo-server
  2. 运行laravel-echo-server init
  3. App\Providers\BroadcastServiceProvider::class取消注释config/app.php
  4. 在app.blade.php中添加<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/socket.io.js"></script>
  5. 你需要一个socketio-client,你可以运行npm install --save laravel-echo。如果你不熟悉npm或vue,你可以简单地从我的github project.compiledjs中包含这个编译文件。
  6. 将其添加到app.blade.php <script> window.Echo = new Echo({ broadcaster: 'socket.io', host: '{{url('/').':6001'}}', }); Echo.private(`App.User.{{Auth::id()}}`) // private channel .listen('NewMessage', (e) => { console.log(e) }); </script>
  7. 最后运行laravel-echo-server启动并打开你的项目,你会看到 [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- App.User.1 [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
  8. 你可以听任何你想要的事件或其他通知
  9. 这是我的github项目echo-example

添加一些代码,以便您可以使用postman发送消息给specfic用户。您可以从chrome console中看到消息。您可以从github项目截图中获取更多详细信息


3
投票

看看这个article。它包括使用redis驱动程序,Laravel echo和socket.io客户端在laravel中实现websocket。

根据上面的文章:

“你为什么不用Pusher?”

这就是事情。

Laravel启用了Pusher。尽管Pusher看起来像是一个快速的“即插即用”解决方案(它确实如此),但它具有局限性。检查https://pusher.com/pricing

大多数教程都会以实现Websockets的标题来欺骗你,而实际上他们只是想给你Pusher。 (我最喜欢的部分就是他们说你可以轻松切换到socket.io)


1
投票

根据laravel documentation,我会建议使用Pusher。我已经为laravel中的用户WebSockets创建了一个包。

https://www.techzonemind.com/scalable-websocket-server-laravel-applications/

它将使用Redis进行后台排队以优化性能。我在很少的解决方案中使用它。我可能无法在所有用例中使用。但好好看看。

PHP不构建为执行并发任务,如果您有选择,nodejs将是更好的解决方案,


1
投票

在LARAVEL集成实时的最佳方式是NODE还是PUSHER

你找到了Pusher Easier,你不想付出代价。然后毫不犹豫地试试Laravel Websockets。它是一个非常简单的Pusher Replacement。

简而言之,您可以使用推送客户端库来访问托管在您的php服务器中的推送器。由于其开源免费。它比使用socket.io或redis更好,因为它们需要您支付额外的服务器成本。你可以查看他们的演示应用程序here

PS

如果您想要更多自定义控件,那么您可以使用ratchet

© www.soinside.com 2019 - 2024. All rights reserved.