小编典典

想要在Laravel中实现Web套接字

redis

我想使用网络套接字在Laravel中实现网络通知。我尝试过推杆。这很容易,但是它是付费的。我还尝试了redis和socket.io,必须为其安装Horizo​​n。我正在运行Windows,但根据我对地平线的了解,无法在Windows上安装它。

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

您能否建议我一些实施推送通知的好主意?


阅读 338

收藏
2020-06-20

共1个答案

小编典典

您一直在使用pusher,所以我假设您知道如何使用事件。

我建议您使用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::classconfig/app.php
  4. <script src="https://cdn.jsdelivr.net/npm/socket.io-client@2.1.1/dist/socket.io.js"></script>在您的app.blade.php中添加
  5. 您需要一个socketio-client,可以运行npm install --save laravel-echo。如果您不熟悉npm或vue,则可以从我的github项目中简单地包含此编译文件。编译js
  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>
  1. 最终运行laravel-echo-server start并打开您的项目,您将看到
        [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- 
       App.User.1
    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
  1. 您可以听任何您想要的事件或其他通知

  2. 这是我的github项目echo-example

添加一些代码,以便您可以使用邮递员向特定的用户发送消息。您可以从chrome控制台查看消息。您可以从github项目屏幕截图中获取更多详细信息

2020-06-20