ratchet/pawl
Composer 安装命令:
composer require ratchet/pawl
包简介
Asynchronous WebSocket client
README 文档
README
An asynchronous WebSocket client in PHP
Install via composer:
composer require ratchet/pawl
Usage
Pawl as a standalone app: Connect to an echo server, send a message, display output, close connection:
<?php require __DIR__ . '/vendor/autoload.php'; \Ratchet\Client\connect('wss://echo.websocket.org:443')->then(function($conn) { $conn->on('message', function($msg) use ($conn) { echo "Received: {$msg}\n"; $conn->close(); }); $conn->send('Hello World!'); }, function ($e) { echo "Could not connect: {$e->getMessage()}\n"; });
Classes
There are 3 primary classes to be aware of and use in Pawl:
Connector:
Makes HTTP requests to servers returning a promise that, if successful, will resolve to a WebSocket object. A connector is configured via its constructor and a request is made by invoking the class. Multiple connections can be established through a single connector. The invoke mehtod has 3 parameters:
- $url: String; A valid uri string (starting with ws:// or wss://) to connect to (also accepts PSR-7 Uri object)
- $subProtocols: Array; An optional indexed array of WebSocket sub-protocols to negotiate to the server with. The connection will fail if the client and server can not agree on one if any are provided
- $headers: Array; An optional associative array of additional headers requests to use when initiating the handshake. A common header to set is
Origin
WebSocket:
This is the object used to interact with a WebSocket server. It has two methods: send and close.
It has two public properties: request and response which are PSR-7 objects representing the client and server side HTTP handshake headers used to establish the WebSocket connection.
Message:
This is the object received from a WebSocket server. It has a __toString method which is how most times you will want to access the data received.
If you need to do binary messaging you will most likely need to use methods on the object.
Example
A more in-depth example using explicit interfaces: Requesting sub-protocols, and sending custom headers while using a specific React Event Loop:
<?php require __DIR__ . '/vendor/autoload.php'; $reactConnector = new \React\Socket\Connector([ 'dns' => '8.8.8.8', 'timeout' => 10 ]); $loop = \React\EventLoop\Loop::get(); $connector = new \Ratchet\Client\Connector($loop, $reactConnector); $connector('ws://127.0.0.1:9000', ['protocol1', 'subprotocol2'], ['Origin' => 'http://localhost']) ->then(function(\Ratchet\Client\WebSocket $conn) { $conn->on('message', function(\Ratchet\RFC6455\Messaging\MessageInterface $msg) use ($conn) { echo "Received: {$msg}\n"; $conn->close(); }); $conn->on('close', function($code = null, $reason = null) { echo "Connection closed ({$code} - {$reason})\n"; }); $conn->send('Hello World!'); }, function(\Exception $e) use ($loop) { echo "Could not connect: {$e->getMessage()}\n"; $loop->stop(); });
ratchet/pawl 适用场景与选型建议
ratchet/pawl 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9.89M 次下载、GitHub Stars 达 616, 最近一次更新时间为 2014 年 06 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「websocket」 「client」 「Ratchet」 「async」 「websocket client」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ratchet/pawl 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ratchet/pawl 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ratchet/pawl 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Mock PSR-18 HTTP client
Asynchronous MQTT client built on React
WebSocket view engine
PHP WebSocket library
Client for Google Directions API to add interpolated points to a route consisting of given coordinates.
A Flickr wrapper to allow you to call the Flickr api with Guzzle as the backend.Goal is to have 100% Flickr api coverage rather than just upload/display photos (currently at 23%).
统计信息
- 总下载量: 9.89M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 620
- 点击次数: 21
- 依赖项目数: 263
- 推荐数: 3
其他信息
- 授权协议: MIT
- 更新时间: 2014-06-15