当前位置: 首页 > 面试题库 >

想要在Laravel中实现Web套接字

颜云瀚
2023-03-14
问题内容

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

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

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


问题答案:

您一直在使用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项目屏幕截图中获取更多详细信息



 类似资料:
  • 这是我第一次和docker合作。我有一个laravel web套接字网站(php laravel postgresql),需要放入一个容器。如果我只是执行命令(没有docker): php工匠服务 php artisan WebSocket:服务 然后它成功地工作: Websockets仪表板http://127.0.0.1:8000/laravel-WebSocket 我做了一个docker安装

  • CORS策略阻止从来源“http://localhost:8080/socket.io/?eio=3&transport=polling&t=mgbuvgw”访问位于“http://localhost:4200”的XMLHttpRequest:请求的资源上没有“Access-Control-Allow-Origin”标头。

  • 我可以通过JavaScript直接将Web套接字连接到我的PHP守护进程服务器:var websocket = new WebSocket(“ws://IP:PORT”);这将正确握手,但是当我尝试nginx代理 http://IP 它无法接收Sec-WebSocket-Key的标头值并且握手失败。 -最近更新:JavaScript根本无法连接,原因是:语法错误:指定了无效或非法的字符串! 变量:

  • 在我的应用程序中,我需要向特定用户发送实时通知。我的类如下, 大多数情况下,信息将由服务器端发送。因此,我没有设置应用程序目标。 在客户端,我订阅目标“/主题/用户”, 在我的一个RestController中,我有一个方法可以将消息广播给所有连接的客户端。 在这部分之前,一切正常。我收到消息并正在登录控制台。 现在,如果我想只向特定用户发送通知,我必须使用。但是我不明白我应该传递给参数的内容。我

  • 问题内容: 如何使用正在侦听套接字连接端口的Servlet来实现Web应用程序? 问题答案: 我假设您不是指通过servlet容器免费获得的前门HTTP连接。但是,如果您想添加例如admin服务,则可以创建一个侦听器线程来设置某些全局状态。 servlet。请注意,这不被认为是犹太洁食的(我相信甚至可能违反servlet标准)。

  • 我有一个Nodejs server.js代码: 我有一个带有java脚本的代码: 在中,我有: 当我在浏览器上打开时,这种方式运行良好。