承接 idimensionz/sassy 相关项目开发

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

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

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

Installation Instructions

  1. Clone the repository
  2. Run composer install to 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!
  • 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

统计信息

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

GitHub 信息

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

其他信息

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

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固