{"id":18438304,"url":"https://github.com/easemob/creative-challenge-webterm","last_synced_at":"2026-01-21T09:01:45.809Z","repository":{"id":90773967,"uuid":"407073870","full_name":"easemob/Creative-Challenge-WebTerm","owner":"easemob","description":null,"archived":false,"fork":false,"pushed_at":"2021-08-28T11:37:42.000Z","size":48867,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-14T15:06:11.616Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"one-matrix/Creative-Challenge-WebTerm","license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/easemob.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-16T07:52:40.000Z","updated_at":"2021-09-16T07:52:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"ba928c4a-ba6e-4b5f-81d0-72ea86093b38","html_url":"https://github.com/easemob/Creative-Challenge-WebTerm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/easemob/Creative-Challenge-WebTerm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FCreative-Challenge-WebTerm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FCreative-Challenge-WebTerm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FCreative-Challenge-WebTerm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FCreative-Challenge-WebTerm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/easemob","download_url":"https://codeload.github.com/easemob/Creative-Challenge-WebTerm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/easemob%2FCreative-Challenge-WebTerm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28630938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T06:19:27.335Z","updated_at":"2026-01-21T09:01:45.786Z","avatar_url":"https://github.com/easemob.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"##### 基于环信mqtt服务的shell远程命令执行\n\n###### 简介：\n 通过MQTT远程执行shell命令\n###### 优势：\n- 相比传统端到端SSH具有较强解耦和长连接保持的优势，消息也更加持久\n- 吞吐量速度提升\n- 网络开销降低\n- 服务质量上，MQTT支持三种不同级别的服务质量，为不同场景提供消息可靠性：\n- 客户端发送消息，推送给未来的订阅者，并支持命令分发执行\n###### 使用说明：\n![615d4334b6ef7d1d5613b7ee05e24620](resources/D3973F7D-C5B6-488E-8DA3-750CF80C842C.png)\n\n##### MQTTWebTermClient\n- web-terminal:\n web输入命令端。\n- MQTT-Client:\n Web客户端后台，监听发布订阅消息，编码命令并推送组装的内容。需要在appsettings.Development.json 配置MQTT连接配置。\n- MQTT-Center:\n MQTT 中介端，如：环信\n##### MQTTServer\n- MQTT-Server:\n MQTT 服务端，接受包含命令的消息，解析命令，SSH方式连接服务器并执行命令。执行完毕发送通知。需配置MQTT连接配置和SSH连接。\n##### MQTTnet.App\n- Common:\n 公共组件，负责MQTT连接调试，也可以作为桌面端命令发送客服端\n \n###### web端输入命令\n ![cmd1](resources/cmd1.png)\n \n###### 服务器端接收到命令\n ![mqtt-server-top1](resources/mqtt-server-top1.png)\n\n ###### 服务器端执行命令并返回结果\n ![cmd_server](resources/cmd_server.png)\n \n ##### 如输入linux命令 ls 查看服务器目录\n ![cmd-con](resources/cmd-con.png)\n \n \n ##### 引用\n   [xterm.js](https://github.com/xtermjs/xterm.js)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasemob%2Fcreative-challenge-webterm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feasemob%2Fcreative-challenge-webterm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feasemob%2Fcreative-challenge-webterm/lists"}