workerman webscoket 希望能支持permessage-deflate

xhxx

问题描述

目前项目用户越来越多 流量以及带宽成倍增长 项目这边讨论一致认为 走压缩方案
但workerman webscoket 不支持 permessage-deflate
所以目前只用了nodejs 做转发支持 permessage-deflate 转发意味着性能上不是很友好

项目这边就评估 正确做法一开始就用nodejs 提供更高的可扩展性

感觉workerman 不增加基础扩展
很难留住大用户 往往成为过渡产品 资源都浪费了

为此你搜索到了哪些方案及不适用的原因

https://www.workerman.net/q/4902

需要懂得框架底层 轮询事件机制 才能二次开发 改不动

1083 2 4
2个回答

walkor

workerman 4.1分支加了 permessage-deflate 支持,你可以试下,测试一段时间没问题后这边再发版本

<?php
require_once __DIR__ . '/vendor/autoload.php';

use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Websocket;
use Workerman\Worker;

$worker = new Worker('websocket://127.0.0.1:8080');

$worker->onWebSocketConnect = function ($connection) {
    // 告诉浏览器服务端支持 permessage-deflate
    $connection->headers = [
        'sec-websocket-extensions: permessage-deflate; server_no_context_takeover; client_max_window_bits=15'
    ];
    // 服务端设置websocket类型为 permessage-deflate,发送数据会自动压缩
    $connection->websocketType = Websocket::BINARY_TYPE_BLOB_DEFLATE;
};

$worker->onMessage = function (TcpConnection $connection, $data)
{
    $connection->send('hello');
};

Worker::runAll();
  • Gin 2022-10-12

    老大真是神速

  • xhxx 2023-01-29

    https://www.codenong.com/22169036/
    C# websocket-sharp 插件使用压缩时 发现有个上下文问题 第一条消息成功 后面就失败了
    请求头
    Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover; client_max_window_bits=15

  • xhxx 2023-01-29

    client_no_context_takeover; 这个标志问题?

Gin
  • 暂无评论
年代过于久远,无法发表回答
🔝