Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何扩展laravel websockets服务器(通过BeyondCode)以直接触发laravel事件?_Php_Laravel_Websocket_Pusher - Fatal编程技术网

Php 如何扩展laravel websockets服务器(通过BeyondCode)以直接触发laravel事件?

Php 如何扩展laravel websockets服务器(通过BeyondCode)以直接触发laravel事件?,php,laravel,websocket,pusher,Php,Laravel,Websocket,Pusher,我研究了很长一段时间,据我所知,BeyondCode触发websocket服务器的websocket事件,从我的laravel base应用程序来看,只是单向消息 消息可以从laravel base应用程序发送到客户端(客户端对消息做出反应)。未实现将来自其他websocket客户端的事件发送到websocket服务器,my laravel base app对此作出反应(触发事件) 要在my laravel base应用程序上触发事件,可以使用Webhook。这是对通用生成路由的标准http请求

我研究了很长一段时间,据我所知,BeyondCode触发websocket服务器的websocket事件,从我的laravel base应用程序来看,只是单向消息

消息可以从laravel base应用程序发送到客户端(客户端对消息做出反应)。未实现将来自其他websocket客户端的事件发送到websocket服务器,my laravel base app对此作出反应(触发事件)

要在my laravel base应用程序上触发事件,可以使用Webhook。这是对通用生成路由的标准http请求

我理解得对吗

如果我无法使用laravel base应用程序接收消息/事件,为什么我要使用websocket服务器?为什么在这种情况下只能使用单向WebSocket

我还是个新手。我想更改/覆盖某些类,查看
BeyondCode\LaravelWebSockets\WebSockets\Channels\Channels
,使某些通道在正确的套接字发送正确的事件时触发事件

如何使用自己的类覆盖
BeyondCode\LaravelWebSockets\WebSockets\Channels\Channels
类,而不破坏BeyondCode的websocket包?我不想碰供应商的东西


websocket服务器是完全独立的还是我可以从servers类中访问我的基本应用程序?如果我这样做,我需要记住什么?

您不需要覆盖任何内容,您的laravel后端将向websockets服务器发送一个事件,websockets服务器将通过相应的通道将事件发送回前端

您可以在项目目录中复制库,并在
composer.json中设置路径:

    "repositories": [
        {
            "type": "path",
            "url": "path-to-the-copy-of-the-library"
        }
    ],
    "repositories": [
        {
            "type": "vcs",
            "url": "URL-to-your-repository"
        }
    ],
或者,您可以创建另一个存储库,并分叉该库,然后再次编辑
composer.json

    "repositories": [
        {
            "type": "path",
            "url": "path-to-the-copy-of-the-library"
        }
    ],
    "repositories": [
        {
            "type": "vcs",
            "url": "URL-to-your-repository"
        }
    ],
确保您的库符合以下要求:

    "require": {
        "beyondcode/laravel-websockets": "*",
    }
然后运行
composer安装

您可以在此处找到更多信息或不同的解决方案:

谢谢你的回答,但我正在寻找另一种方法。据我所知,你所描述的方式是以pusher为司机的标准拉威尔广播。很抱歉,我没有收到你的问题。非常感谢。我需要在接下来的几天里深入研究你的解决方案。当我将它像这样包含到我的项目中时,我是否可以注入我自己的类并仍然接收到beyondcode更新?如果您选择第一个解决方案-否。如果您选择第二个解决方案,它将取决于您是否将beyondcode repo中所做的更改合并到您的项目中。在更熟悉laravel之后,我认为一个解决方案就是您描述的方法。另一个更轻量级、更适合laravel框架的解决方案是为websockets包编写我自己的ServiceProvider,在那里使用我的类覆盖/扩展beyondcodes功能,并将我的ServiceProvider注入beyondcodes包,如下所述: