idimensionz/sassy
Composer 安装命令:
composer require idimensionz/sassy
包简介
Extensible websocket app server driven by 'self-processing' messages
关键字:
README 文档
README
Gitlab: https://gitlab.com/idimensionz/sassy
Requirements
- PHP 7.4 or higher
- Composer
Installation Instructions
- Clone the repository
- Run
composer installto install the dependencies
Starting the websocket server
If you want to see debug output in the server console, set the SASSY_SERVER_DEBUG=1
export SASSY_SERVER_DEBUG=1
Run
php bin/websocket-server.php
Example client apps
From the web broweser JS console
You can test the websocket server right from a web browswer JS console by running the code below (i.e. from the dev console)
Note: You'll want to run this from at least 2 browser tabs/windows to be able to see messages flow between the 2 "clients".
var conn = new WebSocket('ws://localhost:8080'); conn.onopen = function(e) { console.log("Connection established!"); };
let jsonMessage = {messageType: "iDimensionz\AppServer\Message\Base\TextMessage",uniqId:1,message:"hello"};
conn.send(JSON.stringify(jsonMessage));
Try it out with our example chat client built in ReactJS
https://gitlab.com/idimensionz/sassy-example-chat
Design approaches
- Messages know how to "process themselves" via process message on server.
- "Service messages" can access functionality provided by a service class
- i.e. a Channel message allows a connection to call functions on the TopicService like creating a new topic or listing existing topics.
- Channel Manager built in (default "General" topic created when server starts)
- Extensible via events/subscribers to allow developers to easily "hook" into various parts of the server
Uses
Some ideas for ways this can be used ...
- Chat server
- Topics can be "channels".
- TextMessage can be used for basic text messages.
- New message types can be created for images, videos, emojis, etc.
- "Presence"
- Let connections indicate their status (i.e. DND, away, etc)
- Point-to-point communications (audio, video)
- Interactive game server (card games, board games and more)
- Create new message types for actions within a game
- Distributed processing
- Create client apps that can process data payloads sent from the server.
- Replace API's clients with websocket clients
- "Always on" connection could increase performance and enable new features like ...
- real-time analysis of popular pages/products
- "assisted shopping" by allowing customer service to interact with customers in real time
- lots more!
- "Always on" connection could increase performance and enable new features like ...
- and whatever interactive applications your imagination can dream up
Testing
Available via "make" targets in Makefile
- PhpStan - static analysis
- Unit tests
Why create such a thing (especially in PHP)?
- Wanted to create a basis for implementing some of the uses described above.
- To show PHP is ...
- a great language and a lot of the "issues" that people had with it in the past have been addressed in latest versions (especially 8+)
- a language that can be used to create high performance, professional server side applications
idimensionz/sassy 适用场景与选型建议
idimensionz/sassy 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 02 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「event-loop」 「web socket」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 idimensionz/sassy 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 idimensionz/sassy 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 idimensionz/sassy 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Model of a web-based resource
Wrapper around proc_open to ease communication via streams between processes
An asynchronous event driven PHP framework for easily building fast, scalable network applications.
Retrieve a WebResourceInterface instance over HTTP
An asynchronous event driven PHP framework for easily building fast, scalable network applications.
async await implementation using generator function in php
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-02-08