PHPackages                             writethesky/websocket-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. writethesky/websocket-client

ActiveLibrary[HTTP &amp; Networking](/categories/http)

writethesky/websocket-client
============================

基于swoole的websocket客户端，websocket client

1.0.1(6y ago)31081PHP

Since Sep 27Pushed 6y ago1 watchersCompare

[ Source](https://github.com/writethesky/WebSocketClient)[ Packagist](https://packagist.org/packages/writethesky/websocket-client)[ RSS](/packages/writethesky-websocket-client/feed)WikiDiscussions master Synced 2d ago

READMEChangelog (2)Dependencies (1)Versions (3)Used By (0)

websocket client websocket客户端
=============================

[](#websocket-client-websocket客户端)

基于swoole4实现的协程版websocket客户端，直接使用httpclient发送http请求，然后再通过upgrade的方式发送websocket请求，在一些场景下会出现握手成功，一发送消息就被断开连接的情况，本库基于TCP，按照websocket协议标准实现，可避免此类问题的出现

特性
--

[](#特性)

- 基于swoole4实现
- 协程
- 基于TCP实现了标准的websocket协议
- 支持消息事件绑定

代码示例
----

[](#代码示例)

```
use writethesky\WebSocketClient\Client;
use writethesky\WebSocketClient\Frame;

// 需要在协程内
go(function(){
    // 创建连接客户端，uri，超时（0，永不超时）
    $client = new Client("ws://message.xxx.com/websocket", 0);

    // 消息处理回调函数
    $onMessage = function($frame) use ($client)
    {
        // 输出消息内容
        var_dump($frame->getPayload());

    };

    // 绑定消息事件（会开启一个协程, 触发消息回调函数）
    $client->on('message', $onMessage);

    // 连接
    $client->connect();

    // 发送文本类型数据
    $data = '{"appKey":"aaa","costInIsv":0,"pubTime":1569466912760,"sign":"7F23945DDC29B1B3B89B0AF2CE3521A1","type":"CONNECT"}';
    // 数据，类型（text、bin、ping、pong、close），是否掩码处理
    $frame = new Frame($data, "text", true);
    $client->send($frame);

});

```

类说明
---

[](#类说明)

### Client

[](#client)

- new Client(string $uri, float $timeout) -- uri 连接地址 -- timeout 超时时间，单位秒，0，永不超时
- connect() 连接
- send(Frame $frame) 发送数据 -- frame websocket帧
- setOrigin(string $origin) 设置来源
- on(string $event, function $callbak) 绑定事件 -- event 事件名称，暂支持message，其他后续完善 -- callbak 回调函数

### Frame

[](#frame)

- new Frame(string $payload, string $type = 'text', bool $mask = true) -- payload 数据 -- type 类型（text、bin、ping、pong、close） -- mask 是否掩码处理，如果服务端严格实现了websocket协议，客户端必须设置掩码
- new Frame() 创建帧对象的时候不初始化数据，后续手动设置，但是目前暂时未提供手动设置的方法，不建议采用这种方式创建对象
- Frame::decode($response) 解码websocket服务端返回的原始数据，返回Frame对象
- getPayload() 获取帧内数据
- getType() 获取帧类型
- getMask() 获取是否掩码
- getFrame() 获取帧内数据，如果mask为false，与Payload相同，否则为掩码处理后的Payload

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity59

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2421d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/a37061462bcb8a27f29029d2f005b66215848227d90333d746ad731bd2c4223f?d=identicon)[writethesky](/maintainers/writethesky)

---

Top Contributors

[![writethesky](https://avatars.githubusercontent.com/u/7201443?v=4)](https://github.com/writethesky "writethesky (2 commits)")

### Embed Badge

![Health badge](/badges/writethesky-websocket-client/health.svg)

```
[![Health](https://phpackages.com/badges/writethesky-websocket-client/health.svg)](https://phpackages.com/packages/writethesky-websocket-client)
```

###  Alternatives

[friendsofsymfony/rest-bundle

This Bundle provides various tools to rapidly develop RESTful API's with Symfony

2.8k73.3M319](/packages/friendsofsymfony-rest-bundle)[php-http/discovery

Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations

1.3k309.5M1.2k](/packages/php-http-discovery)[nyholm/psr7

A fast PHP7 implementation of PSR-7

1.3k235.4M2.4k](/packages/nyholm-psr7)[spatie/crawler

Crawl all internal links found on a website

2.8k16.3M52](/packages/spatie-crawler)[react/http

Event-driven, streaming HTTP client and server implementation for ReactPHP

78126.4M414](/packages/react-http)[php-http/curl-client

PSR-18 and HTTPlug Async client with cURL

48247.0M384](/packages/php-http-curl-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
