brainboxlabs/brain-socket

为事件驱动的Laravel应用提供Websockets。

v1.0.0 2013-10-31 19:36 UTC

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',

接下来,打开terminalcd到您的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.successapp.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配合得很好。

前往https://github.com/BrainBoxLabs/brain-socket-js下载它。