brainboxlabs / brain-socket
为事件驱动的Laravel应用提供Websockets。
Requires
- php: >=5.3.0
- cboden/ratchet: 0.3.*
Requires (Dev)
- mockery/mockery: 0.8.0
- phpunit/phpunit: 3.7.28
This package is not auto-updated.
Last update: 2024-09-28 15:49:36 UTC
README
注意:BrainSocket非常适合重量级前端开发(例如单页JavaScript应用等)。我们目前正在努力将推送通知集成到下一个版本中。
为实时事件驱动的Laravel应用提供WebSockets。
此Laravel 4包提供Artisan命令,用于在Laravel应用内设置并运行带有Ratchet的WebSocket服务器。
让我们通过Composer安装此包。编辑您的Laravel项目的composer.json
文件,并添加require "brainboxlabs/brain-socket"
"require": { ... "brainboxlabs/brain-socket": "v1.0.0" },
注意:请确保检查packagist.org以获取更新的依赖项,但上述列表是在编写本文时经过测试的。
一旦安装了包及其所有依赖项,我们需要将BrainSocketServiceProvider
添加到我们的app/config/app.php
文件中。
将此行
'providers' => array( ... 'BrainSocket\BrainSocketServiceProvider',
添加到配置文件中的提供者数组末尾。
还可以在app/config/app.php
文件中的aliases
数组中添加一个可选但推荐的Facade。
'aliases' => array( ... 'BrainSocket' => 'BrainSocket\BrainSocketFacade',
接下来,打开terminal
并cd
到您的Laravel项目目录。
运行php artisan list
并确认您在命令列表中看到brainsocket:
命令。它应该看起来像这样
Available commands:
brainsocket
brainsocket:start
一旦确认列表,运行以下命令以启动WebSocket服务器
php artisan brainsocket:start
注意:WebSocket服务器默认运行在8080端口。您可以使用Artisan命令末尾的可选--port=port_number
来更改此端口号。
php artisan brainsocket:start --port=8081
此时,您应该在终端中看到一条消息,表明WebSocket已启动在所选端口。此时,终端将被锁定/不可用,要停止WebSocket服务器,请在终端中按ctrl+c
。
注意:在ws服务器运行时对您的laravel应用/代码所做的任何更改都不会被考虑。您需要重新启动ws服务器才能看到您的更改。
让我们通过在终端中按ctrl+c
来停止ws服务器。
接下来,在app/
文件夹中创建一个名为events.php
的文件
将以下代码添加到events.php
<?php Event::listen('generic.event',function($client_data){ return BrainSocket::message('generic.event',array('message'=>'A message from a generic event fired in Laravel!')); }); Event::listen('app.success',function($client_data){ return BrainSocket::success(array('There was a Laravel App Success Event!')); }); Event::listen('app.error',function($client_data){ return BrainSocket::error(array('There was a Laravel App Error!')); });
注意:传递给事件监听器的$client_data
参数是一个POPO(Plain Old PHP Object),包含从客户端传递的所有数据。
注意:app.success
和app.error
事件不是必需的,但它们是处理闪存消息的帮助事件。
现在,在app/start/global.php
中,在文件末尾添加以下行
require app_path().'/filters.php'; require app_path().'/events.php';
太棒了!现在我们在客户端有一些事件可以测试。运行Artisan命令php artisan brainsocket:start
再次启动ws服务器。
为了方便起见,我们创建了一个简单的js辅助工具,允许我们更容易地与我们的新ws服务器交互。这不是必需的,但它处理一些后台的格式化任务,这样您就不必这样做,并且与我们的BrainSocket Facade配合得很好。