pupper/pupper-php

此包已被废弃,不再维护。未建议替代包。

Pupper 的 PHP 组件

0.3.2 2017-10-23 11:44 UTC

This package is not auto-updated.

Last update: 2020-08-22 06:02:36 UTC


README

d005d89e-ff25-4450-9119-aa56ff0d8949

Codacy Badge Software License SensioLabsInsight

Pupper 代表 "PHP Plus React" (PPR > Pupper)。目标是创建一个框架,将这两种技术的优点结合在一起,并实现双向通信。

查看示例实现

快速开始

Pupper PHP 基于 Aerys,一个非阻塞的 PHP 应用程序和 WebSocket 框架。

以下是快速入门的代码概览。

use Pupper\Pupper\Event;

// Initiates WebSocket connection
$websocket = (new Pupper\Pupper\WebSocket)

    // Filter allowed clients (optional)
    ->allowOrigin('https', 'your.domain.com', 443);

    // Defines a callback for 'my_event'
    ->addEventListener('my_event', function (Event $event) {
    
        // Dispatches to all clients
        $websocket->broadcastEvent(
            new Event('notify_all', 'Something has happened!');
        );
    
        // Dispatches to the client that triggered the callback
        return (new Event)
            ->setName('operation_done')
            ->setValue('Your value was ' . $event->getValue());

    });

$router = Aerys\router()->route('GET', '/', Aerys\websocket($websocket));

// Exposes the websocket to the 1337 port
return (new Aerys\Host)->use($router)->expose('*', 1337);

API

WebSocket

WebSocket 是在 PHP 端启动 WebSocket 的类。

addListener

addListener 以事件名称作为第一个参数,以回调函数作为第二个参数。

如果你 return 一个 Event,它将被发送到触发回调的客户。

use Pupper\Pupper\Event;

$websocket = (new Pupper\Pupper\WebSocket)
    ->addEventListener('custom', function (Event $event) {
        return (new Event)
            ->setName('custom')
            ->setValue('From PHP: ' . $event->getValue());
    });

broadcastEvent

broadcastEvent 将事件发送到所有客户。

use Pupper\Pupper\Event;

$websocket = (new Pupper\Pupper\WebSocket)
    ->addEventListener('player_has_joined', function (Event $event) {
        $websocket->broadcastEvent(
            'player_count_updated',
            'A new player has joined!'
        );
    });

客户端筛选

将 WebSocket 构造函数的协议、主机和端口参数设置为限制对您的 WebSocket 的访问。

$websocket = (new \Pupper\WebSocket)->allowOrigin('https', 'your.domain.com', 80);

事件

Event 表示来自 PHP 端的事件。

读取

EventgetName()getValue() 方法来读取事件的名称和值。

use Pupper\Pupper\Event;

function (Event $event) {
    echo $event->getName();
    echo $event->getValue();
});

写入

EventsetName()setValue() 方法来写入事件的名称和值。

use Pupper\Pupper\Event;

$event = (new Event)
    ->setName('hello_event')
    ->setValue('Hello from PHP!');

构造

Event 的构造函数还接受事件的名称和值作为参数。

use Pupper\Pupper\Event;

$event = new Event(
    'hello_event', 
    'Hello from PHP!'
);

致谢

许可证

Unlicense。请参阅 许可证文件 获取更多信息。