{"id":20895050,"url":"https://github.com/topheman/webrtc-remote-control","last_synced_at":"2025-05-12T23:31:23.026Z","repository":{"id":38185534,"uuid":"448910377","full_name":"topheman/webrtc-remote-control","owner":"topheman","description":"Thin abstraction layer above peerjs that will let you be more productive at making WebRTC data channels based apps.","archived":false,"fork":false,"pushed_at":"2022-08-16T11:02:52.000Z","size":1938,"stargazers_count":13,"open_issues_count":0,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-16T04:24:12.901Z","etag":null,"topics":["peerjs","react","rtcdatachannel","vue","webrtc"],"latest_commit_sha":null,"homepage":"https://webrtc-remote-control.vercel.app","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/topheman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-17T13:44:08.000Z","updated_at":"2025-03-01T06:32:48.000Z","dependencies_parsed_at":"2022-07-14T22:00:37.472Z","dependency_job_id":null,"html_url":"https://github.com/topheman/webrtc-remote-control","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topheman%2Fwebrtc-remote-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topheman%2Fwebrtc-remote-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topheman%2Fwebrtc-remote-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/topheman%2Fwebrtc-remote-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/topheman","download_url":"https://codeload.github.com/topheman/webrtc-remote-control/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253840362,"owners_count":21972468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["peerjs","react","rtcdatachannel","vue","webrtc"],"created_at":"2024-11-18T10:24:36.888Z","updated_at":"2025-05-12T23:31:22.606Z","avatar_url":"https://github.com/topheman.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# webrtc-remote-control\n\n[![ci](https://github.com/topheman/webrtc-remote-control/actions/workflows/ci.yml/badge.svg)](https://github.com/topheman/webrtc-remote-control/actions/workflows/ci.yml)\n[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://www.conventionalcommits.org)\n[![Demo](https://img.shields.io/badge/demo-online-blue.svg)](http://webrtc-remote-control.vercel.app/)\n\nImplementations\n\n| Package                                                 | Version                                                                                                                                    |\n| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |\n| [@webrtc-remote-control/core](./packages/core#readme)   | [![npm](https://img.shields.io/npm/v/@webrtc-remote-control/core?color=blue)](https://www.npmjs.com/package/@webrtc-remote-control/core)   |\n| [@webrtc-remote-control/react](./packages/react#readme) | [![npm](https://img.shields.io/npm/v/@webrtc-remote-control/react?color=blue)](https://www.npmjs.com/package/@webrtc-remote-control/react) |\n| [@webrtc-remote-control/vue](./packages/vue#readme)     | [![npm](https://img.shields.io/npm/v/@webrtc-remote-control/vue?color=blue)](https://www.npmjs.com/package/@webrtc-remote-control/vue)     |\n\n- [Demo](./demo#readme)\n- [CONTRIBUTING](CONTRIBUTING.md)\n\n## The problem\n\n[PeerJS](https://peerjs.com) is a great layer of abstraction above WebRTC with a simple API, though, you still need to:\n\n- track your connections\n- handle reconnects of peers when your page reloads\n\nYou don't want to think about this kind of networking problems, you want to focus on your app logic.\n\n**webrtc-remote-control** handles all of that.\n\n## The use case\n\n**webrtc-remote-control** was made to handle star topology network:\n\n\u003cp style=\"text-align:center\"\u003e\u003cimg src=\"./public/star-network-topology.png\" width=200\u003e\u003c/p\u003e\n\nYou have:\n\n- One \"master\" page connected to\n- Multiple \"remote\" pages\n\nWhat you can do (through data-channel):\n\n- From \"master\" page, you can send data to any or all \"remote\" pages\n- From one \"remote\" page, you can send data to the master page\n\nWhen \"master\" page drops connection (the page closes or reloads), the \"remote\" pages are notified (and remote automatically reconnect when master retrieves connection).\n\nWhen a \"remote\" page drops connection (the page closes or reloads), the \"master\" page gets notified (and the remote reconnects to master as soon as it reloads).\n\n## Genesis\n\nA few years ago I made [topheman/webrtc-experiments](https://github.com/topheman/webrtc-experiments), as a proof of concept for WebRTC data-channels relying on PeerJS.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopheman%2Fwebrtc-remote-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftopheman%2Fwebrtc-remote-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftopheman%2Fwebrtc-remote-control/lists"}