fanout/laravel-grip

v2.1.0 2023-12-15 22:43 UTC

This package is auto-updated.

Last update: 2024-09-16 00:16:27 UTC


README

Laravel 提供的 GRIP 库,以 Laravel 包的形式提供。

最低支持的 Laravel 版本是 7.0,但它可能与旧版本兼容。

支持的 GRIP 服务器包括

此库还支持由 Fanout 云托管的旧版服务。

作者:Katsuyuki Omuro komuro@fastly.com,Madeline Boby maddie.boby@fastly.com

简介

GRIP 是一种协议,它允许网络服务使用 HTTP 和头部将实时推送行为委托给代理组件。

laravel-grip 解析任何请求中的 Grip-Sig 头部,以检测它们是否通过 GRIP 代理传入,并为您的路由处理程序提供处理此类请求的工具。这包括访问有关当前请求是否代理或签名的信息,以及向 GRIP 代理发出任何保持指令的方法。

此外,laravel-grip 还处理 WebSocket-Over-HTTP 处理,以便由 GRIP 代理管理的 WebSocket 连接可以由您的路由处理程序控制。

安装

安装库。

composer require fanout/laravel-grip

这将通过 Composer 的提供者机制将库以及中间件安装到您的 Laravel 应用程序的堆栈中。

配置

可以通过向 Laravel 应用程序添加名为 ./config/grip.php 的文件来配置 laravel-grip。它看起来像这样

<?php

return [
    'grip' => /* string, array, or array of arrays */,
    'prefix' => /* string. defaults to the empty string */,
    'grip_proxy_required' => /* boolean, defaults to false */,
];

可用选项

grip 参数可以是以下任何一种

  1. 具有以下字段的对象
  1. 此类对象的数组。

  2. GRIP URI,它是一个字符串,将上述内容编码为单个字符串。

处理路由

中间件将自动安装到您的所有路由之前。

当您的路由运行时,您将能够访问以下外观:GripGripInstructGripPublisherGripWebSocket

Grip 将在所有请求中可用,而其他外观仅在配置和当前请求适用的情况下可用。

Grip 外观提供了以下功能

当当前请求是代理时,则 GripInstruct 外观可用,并提供了与 fanout/grip 中的 GripInstruct 相同的功能。

当当前请求通过 WebSocket-over-HTTP 调用时,则 GripWebSocket 外观可用,并提供了与 fanout/grip 中的 WebSocketContext 相同的功能。

要发布消息,请使用 GripPublisher 外观。它提供了与 fanout/grip 中的 Publisher 相同的功能。使用它来发布使用 ./config/grip.php 文件中指定的端点和前缀的消息。

示例

此存储库包含在 examples 目录中找到的 laravel-grip 用法的示例。有关每个示例的详细信息,请阅读相应目录中的 README.md 文件。

测试

使用以下命令运行测试

./vendor/bin/phpunit