承接 memran/marwa-envelop 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

memran/marwa-envelop

最新稳定版本:v1.0.0

Composer 安装命令:

composer require memran/marwa-envelop

包简介

Transport-agnostic message envelope with fluent builder for Kafka/WebSocket/etc.

README 文档

README

Latest Version on Packagist Downloads License

Transport-agnostic, structured message wrapper for PHP — ideal for Kafka, WebSocket, MQTT, log pipelines, or chat protocols.

🚀 Features

  • 📦 PSR-compliant and lazy-loaded
  • 💬 Works with strings, arrays, files, and links
  • 🔐 Optional HMAC signing with TTL expiry
  • 🔁 Compress/gzip for efficient transport
  • 🔗 Attachments and file linking
  • 🧱 Chainable message builder syntax
  • 🧪 Ready for WebSocket, Kafka, SQS, Laravel Queue, MQTT, etc.

📸 Screenshot

Message structure as decoded from Envelop JSON:

{
  "id": "2dd0faca-499a-42de-a274-a458b12dc1cf",
  "type": "chat.message",
  "sender": "user:123",
  "receiver": "user:456",
  "body": "Hello World!",
  "headers": {
    "x-room": "demo"
  },
  "signature": "..."
}

📦 Installation

composer require memran/marwa-envelop

🛠 Usage Example

✉️ Build and Send Message

use Marwa\Envelop\EnvelopBuilder;

$msg = EnvelopBuilder::start()
    ->type('chat.message')
    ->sender('user:123')
    ->receiver('user:456')
    ->header('x-room', 'demo')
    ->body('Hello world!')
    ->ttl(60)
    ->sign('super-secret-key')
    ->build();

// Send over Kafka, WebSocket, etc.
$wire = $msg->toJson();

📬 Decode and Read Message

use Marwa\Envelop\Envelop;

$received = Envelop::fromJson($wire);

if ($received->isExpired()) {
    throw new \Exception("Message expired");
}

if (!$received->checkSignature('super-secret-key')) {
    throw new \Exception("Invalid signature");
}

echo $received->body; // "Hello world!"

📁 Attach File

$msg = EnvelopBuilder::start()
    ->type('chat.file')
    ->sender('u:1')
    ->receiver('u:2')
    ->attach('/path/to/image.jpg')
    ->build();

🔗 Link to Remote File

$msg = EnvelopBuilder::start()
    ->type('file.link')
    ->sender('u:1')
    ->receiver('u:2')
    ->link('https://example.com/my.pdf', [
        'name' => 'My Document',
        'size' => '2MB'
    ])
    ->build();

🧩 Ideal Use Cases

  • WhatsApp-style chat systems
  • Kafka or MQTT message brokers
  • WebSocket messaging with TTL
  • Distributed logging pipelines
  • Task queues with metadata (e.g. Laravel, Symfony)

🔖 Stable Releases

Version Notes
v1.0.0 Initial stable release 🚀

📝 License

MIT © Mohammad Emran

🧠 Keywords

  • kafka
  • websocket
  • envelope
  • message structure
  • event-driven
  • php builder
  • logging
  • transport agnostic
  • HMAC
  • json message
  • file attachment
  • laravel queue

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-08-08