{"id":24862207,"url":"https://github.com/moduleart/cousine-web","last_synced_at":"2025-10-21T18:15:55.238Z","repository":{"id":101998007,"uuid":"340694552","full_name":"ModuleArt/cousine-web","owner":"ModuleArt","description":"Video/voice chat for 2+ people built-in on top of WebRTC","archived":false,"fork":false,"pushed_at":"2021-02-21T21:48:00.000Z","size":343,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-05-23T10:31:27.905Z","etag":null,"topics":["audio","audio-chat","chat","video","video-chat","voice","voice-chat","webrtc","webrtc-video"],"latest_commit_sha":null,"homepage":"http://cousine.herokuapp.com/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"unlicense","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ModuleArt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-02-20T16:04:10.000Z","updated_at":"2024-01-31T15:25:28.000Z","dependencies_parsed_at":"2023-07-12T13:31:04.655Z","dependency_job_id":null,"html_url":"https://github.com/ModuleArt/cousine-web","commit_stats":{"total_commits":11,"total_committers":2,"mean_commits":5.5,"dds":"0.36363636363636365","last_synced_commit":"ab4bb4cb6b8b2de09799e01ce5fe30880914734b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModuleArt%2Fcousine-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModuleArt%2Fcousine-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModuleArt%2Fcousine-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ModuleArt%2Fcousine-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ModuleArt","download_url":"https://codeload.github.com/ModuleArt/cousine-web/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236595171,"owners_count":19174371,"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":["audio","audio-chat","chat","video","video-chat","voice","voice-chat","webrtc","webrtc-video"],"created_at":"2025-01-31T22:43:13.063Z","updated_at":"2025-10-15T08:30:52.457Z","avatar_url":"https://github.com/ModuleArt.png","language":"JavaScript","readme":"About\n=====\n\nThis is a \"simple\", but complete example of how to utilize WebRTC to do peer to\npeer voice and video chatting between two or more people.\n\n### Server Side \nThis example uses node.js and socket.io to create a \"Signaling Server\", which\nruns on (or near) your web server to manage who should talk to who. The purpose\nof the signaling server is to relay information between peers while you are\nsetting them up to talk directly to each other.\n\n\n### Client Side\nIncluded is `client.html` which contains all of the logic to connect to the\nsignaling server, join a virtual group chat channel, connect with peers, and\nstream video and audio to all party members using the raw WebRTC API.\n\n\nRunning\n=======\n\n### Node.js signaling server\nYou'll need to install `node.js` as well as the `express` and `socket.io` libraries:\n```\nnpm install -g socket.io express\n```\n\nThen simply run the signaling server:\n```\nnode server.js\n```\n\n### Web server\nYou'll also probably want to host `client.html` on a web server somewhere. You'll need\nto edit `client.html` and change `YOURSERVERNAMEHERE` to be the hostname or IP of \nthe signaling server.\n\nNote: you can also simply open the file locally instead of using a web server,\nbut at the time of writing this only firefox will let you access the\nwebcam/microphone from a file hosted off of your local machine.\n\n\n### Running the sample\nNow navigate to wherever you stuck `client.html` and you should be presented with\na dialog asking permission to access your microphone / webcam. Once accepted,\nyou should see a local stream appear on the page. Now open up the same page in\nanother browser, on the same computer or another, and watch as the magic of WebRTC takes\neffect and both images and audio samples mysteriously move from one browser to the other.\nRepeat with as many browsers as you dare.\n\n\nNote: At the time of writing this, only firefox and chrome support WebRTC,\nhowever both browsers support this on Windows, Linux, Mac, and Android, so lots\nof fun can be had pointing everyones' phones, tablets, and laptops at that `client.html`\nand bogging down your network with audio/video traffic.\n\n\nUsing things other than jQuery, node.js, and socket.io\n=============================================\nThe choice of node.js and socket.io is based purely on my familiarity with them\nand the fact that their fairly easy to understand even if you aren't familiar\nwith them. However, you can use any mechanisms you want for your signaling system, you\njust need a way to exchange ICE candidates and session descriptions between\nclients.\n\nThe use of jQuery is even less important, I just like using it for DOM\nmanipulation, and we only do that to add and remove the \u003cvideo\u003e/\u003caudio\u003e\nelements in this demo. We don't use it at all for anything WebRTC specific in\nthis example.\n\nAdapter.js\n==========\nYou'll see `client.html` use `adapter.js`. This \"library\" just normalizes the\nWebRTC API, which will only be necessary while WebRTC is making its way through\nthe standards process. Once everything is standardized and functions are\nde-prefixed in the browsers, this won't be necessary anymore.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoduleart%2Fcousine-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoduleart%2Fcousine-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoduleart%2Fcousine-web/lists"}