HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
cjb
serverless-webrtc
JavaScript2013–2023
cjb / serverless-webrtc

serverless-webrtc

A demo of using WebRTC with no signaling server.

13Distinct people
14Mentions
0Explicit recommenders
1.6KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

A demo of using WebRTC with no signaling server.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year14 dated mentions

Observed mentions: 2013-12-28 16:36:09 UTC to 2023-09-06 21:27:23 UTC.

012342013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC101
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

What Hacker News says

14 sources
I recently learned you can do the candidate server exchange without those servers. There was an implementation which used [this](https://github.com/cjb/serverless-webrtc) as a backend and a QR code to do the transfer. I can't seem to find it now. However they were having issues with the QR code reaching its size limit, leading to the question of whether you could break the message into a series of qr codes. Pretty interesting stuff, I was considering taking a crack at it as part of a project I'm working on. Edit: [here](https://franklinta.com/2014/10/19/serverless-webrtc-using-qr... the blog post about it
In This page exists only if someone is looking at it
As mentioned, you cant manually set up your listening ports - this is handled internally by ICE, which needs to connect to a STUN server to get (at a minimum) your public IP address. edit: cant reply to your comment fulafel, but on that project you posted: https://github.com/cjb/serverless-webrtc/blob/master/serverl... Also, note that even if this wasnt defined, some browsers contain defaults. You 100% need STUN, but you can handle the signalling manually - as I stated. edit2: cant reply to your comment ibc, but I was explaining the bare minimum 'serverless' webrtc case still required a STUN server. I appreciate that mediasoup SFU uses ice-lite instead.
In Mediasoup – WebRTC Video Conferencing
The post makes it sound like it's a copy of https://github.com/cjb/serverless-webrtc uploaded to IPFS; examining the code [1] shows that '23.21.150.121' is hardcoded for STUN. This was seemingly set up by Wesley Dawson [2] at Mozilla in 2013, at which point it was an EC2 machine in AWS us-east-1. It subsequently made it into various gists and projects as a public STUN server. Later in 2013 Mozilla changed over to using a hostname in Firefox instead [3], and much later Firefox 41 removed [4] Mozilla's STUN servers from being defaults. I'm not sure how one would go about confirming that this service is still pro bono and not malicious, and whether it's likely to stick around in the future. [1] https://github.com/cjb/serverless-webrtc/blob/master/js/serv... [2] https://bugzilla.mozilla.org/show_bug.cgi?id=807494 [3] https://bugzilla.mozilla.
Read the rest
In WebRTC Chat on IPFS
Yes; vaguely... there was some (string) message format that you could manually stitch together with the right IP and port, etc, and basically tell the browser's WebRTC implementation "other client is on this IP and port". I seem to have deleted this code unfortunately, the only thing I saved is this link: https://github.com/cjb/serverless-webrtc/ EDIT: Aha! I based my code on: https://github.com/js-platform/node-webrtc/blob/develop/exam...
In A solution for enabling UDP in the web
> there was no depending on external services, which at the time put WebRTC out of the picture (all of the easy to use implementations required internet access to use existing signaling services) See: https://github.com/cjb/serverless-webrtc That's a good rough demo of how WebRTC connections can still be established with the ask/offers being conveyed out-of-band. To make it a little more friendly for tablets (and to accomplish before messages expire) I'd think QR codes would be a reasonable way of passing the data without depending on an external service. There could also be some extraneous information that can be stripped to save on the amount of data you pass between peers so that the QR code isn't excessively gross (see: https://webrtchacks.com/the-minimum-viable-sdp/)
In JSMpeg – Decode It Like It's 1999
Dude. You're really focusing on the wrong thing here. No one is lying or attempting to deceive. At worst, the term is being used loosely - at worst. At best it's only referring to the portion of the work that happens during "multi player". I get your frustration with software development jargon but this seems like an odd choice to attack. And to two of your points, here's a version that is "serverless", and can run completely from the file system. https://github.com/cjb/serverless-webrtc But is it truly "serverless"? I mean the file system is serving the file up to the browser! C'mon. Oh, and in case you were going to point out that there's a server involved in the link I posted because, "the WebRTC offer/answer exchange is performed manually by the users, for example via IM", (emphasis mine) - the information could just as easily be writ
Read the rest
ten on a piece of paper and exchanged via carrier pigeon. The pigeon may still technically be a server, in an architectural sense I suppose, but hopefully at that point you'd agree we're taking the argument past the point of any sensibility.
In Show HN: WebRTC Serverless 2-player 2048 Game with Annotated Source
Have you looked into WebRTC much? It supports arbitrary (text or binary) data transfer between browsers, in both TCP-like and UDP-like modes, with inbuilt NAT-busting (both STUN and TURN). It does NAT-busting rather than VPN, so it's faster than either Tor or a VPN. So if the reason you wanted NAT traversal was "my (browser|game|filesystem) wants to share data with someone else's", WebRTC is a far easier answer, and is now available to most browsers[1] without extra software installs. It does involve a privacy loss of your connection details to the STUN/TURN server, but the signaling server cannot decrypt your (DTLS) communication. If the reason you want a global LAN isn't those things, what is it? [1]: Available outside browsers, too: see e.g. my Node WebRTC chat client -- https://github.com/cjb/serverless-webrtc -- or the native C++
Read the rest
API.
In Can NAT traversal be Tor's killer feature?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.