想在Laravel中实现Web套接字

Pra*_*lik 9 push-notification redis laravel laravel-5.6

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

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

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

Evo*_*Rof 5

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

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

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

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

composer require predis/predis
redis-server /usr/local/etc/redis.conf
Run Code Online (Sandbox Code Playgroud)
  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项目中包含这个编译文件.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>
    
    Run Code Online (Sandbox Code Playgroud)
  7. 最后运行laravel-echo-server启动并打开你的项目,你会看到

    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE authenticated for: private- 
       App.User.1
    [20:53:21] - Lv5OKDAcuSLsK1nBAAAE joined channel: private-App.User.1
    
    Run Code Online (Sandbox Code Playgroud)
  8. 你可以听任何你想要的事件或其他通知

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

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


Kha*_*leh 5

看看这篇文章。它涵盖了使用 redis 驱动程序、Laravel echo 和 socket.io 客户端在 Laravel 中实现 websocket。

\n\n

根据上面的文章:

\n\n

\xe2\x80\x9c为什么不\xe2\x80\x99你只使用Pusher?\xe2\x80\x9d

\n\n

事情是这样的。

\n\n

Laravel 附带了 Pusher 功能。尽管 Pusher 看起来像是一个快速的 \xe2\x80\x9c 即插即用\xe2\x80\x9d 解决方案(事实确实如此),但它也有局限性。检查https://pusher.com/pricing

\n\n

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

\n