All Projects → hakobera → Serverless Webrtc Signaling Server

hakobera / Serverless Webrtc Signaling Server

Licence: other
Serverless WebRTC Signaling Server only works for WebRTC P2P.

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Serverless Webrtc Signaling Server

Cuckoo
🎥 Cuckoo - A free anonymous video-calling web application built with WebRTC and React that provides peer-to-peer video and audio communication in a web browser with no plugins or extensions required.
Stars: ✭ 195 (+200%)
Mutual labels:  websocket, webrtc
Biubiu
弹幕视频与直播网站
Stars: ✭ 266 (+309.23%)
Mutual labels:  websocket, webrtc
Ayame
WebRTC Signaling Server Ayame
Stars: ✭ 218 (+235.38%)
Mutual labels:  websocket, webrtc
Action Cable Signaling Server
🤝Rails implementation of a WebRTC Signaling Server
Stars: ✭ 118 (+81.54%)
Mutual labels:  websocket, webrtc
Eureca.io
eureca.io : a nodejs bidirectional RPC that can use WebSocket, WebRTC or XHR fallback as transport layers
Stars: ✭ 341 (+424.62%)
Mutual labels:  websocket, webrtc
Toho Like Js
Touhou style danmaku shooter game which runs on your chrome.
Stars: ✭ 127 (+95.38%)
Mutual labels:  websocket, webrtc
Webrtc Qr
WebRTC Connect Experiment - https://aquigorka.com/webrtc-qr/
Stars: ✭ 154 (+136.92%)
Mutual labels:  serverless, webrtc
Ca11
Multi-Protocol Webphone
Stars: ✭ 69 (+6.15%)
Mutual labels:  websocket, webrtc
Monibuca
🧩 Monibuca is a Modularized, Extensible framework for building Streaming Server
Stars: ✭ 307 (+372.31%)
Mutual labels:  websocket, webrtc
Vosk Server
WebSocket, gRPC and WebRTC speech recognition server based on Vosk and Kaldi libraries
Stars: ✭ 277 (+326.15%)
Mutual labels:  websocket, webrtc
Learning Webrtc
Codes and notes while learning webrtc
Stars: ✭ 98 (+50.77%)
Mutual labels:  websocket, webrtc
Semana Javascript Expert02
Exemplos de código da segunda semana Javascript Expert - Zoom Clone
Stars: ✭ 534 (+721.54%)
Mutual labels:  websocket, webrtc
Laverna
Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote.
Stars: ✭ 8,770 (+13392.31%)
Mutual labels:  websocket, webrtc
Metastream
Watch streaming media with friends.
Stars: ✭ 1,926 (+2863.08%)
Mutual labels:  websocket, webrtc
Laplace
Laplace is an open-source project to enable screen sharing directly via browser. Based on WebRTC for low latency peer-to-peer connections, and WebSocket implemented in golang for signaling.
Stars: ✭ 81 (+24.62%)
Mutual labels:  websocket, webrtc
Deershare
小鹿快传,一款在线P2P文件传输工具,使用WebSocket + WebRTC技术
Stars: ✭ 251 (+286.15%)
Mutual labels:  websocket, webrtc
Zlmediakit
WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181 server and client framework based on C++11
Stars: ✭ 5,248 (+7973.85%)
Mutual labels:  websocket, webrtc
Libdatachannel
C/C++ WebRTC Data Channels and Media Transport standalone library
Stars: ✭ 336 (+416.92%)
Mutual labels:  websocket, webrtc
Briefing
Secure direct video group chat
Stars: ✭ 710 (+992.31%)
Mutual labels:  websocket, webrtc
Benchmark Websocket
Websocket Client and Server for benchmarks with Millions of concurrent connections.
Stars: ✭ 62 (-4.62%)
Mutual labels:  websocket

CircleCI

serverless-webrtc-signaling-server

This is the code and template for the serverless-webrtc-signaling-server. There are five functions contained within the directories and a SAM teamplte that wires them up to a DynamoDB table and provides the minimal set of permissions needed to run the app.

What is Serverless WebRTC Signaling Server?

Serverless WebRTC Signaling Server is Signaling Server for WebRTC using WebSocket and running on AWS. This signaling server only works for WebRTC P2P.

This signaling server implements room feature compatible with WebRTC Signaling Server Ayame. Room feature is simple, so only 2 people can join a room.

If you want to know how this server works, refer to https://github.com/shiguredo/ayame/blob/develop/doc/DETAIL.md (written in Japanese)

Setup process on Local Machine

Requirements

Installing dependencies

This repository use GO Modules to manage dependencies. Dependencies are automaticaly download when you build code by make build command.

Building

Golang is a statically compiled language, meaning that in order to run it you have to build the executable target.

You can issue the following command in a shell to build it:

make build

Local testing

Unit Testing

We use testing package that is built-in in Golang and you can simply run the following command to run our tests:

make test

Integration Testing

Unfortunatelly sam CLI does not support WebSocket local test. So you need to deploy to test functionality. We are planing to write local integration test using Local Stack, but not yet implemented.

Packaging and deployment

First and foremost, we need a S3 bucket where we can upload our Lambda functions packaged as ZIP before we deploy anything - If you don't have a S3 bucket to store code artifacts then this is a good time to create one:

aws s3 mb s3://BUCKET_NAME

Next, create file named .env using cp .env.template .env command. Then open the file in your editer and set S3 bucket name which you created to SAM_BUCKET.

# Must need to change
SAM_BUCKET=REPLACE_THIS_WITH_YOUR_S3_BUCKET_NAME

# Change if you want 
AWS_REGION=ap-northeast-1
STAGE=Dev
STACK_NAME=webrtc-signaling-server
ROOM_TABLE_NAME=Rooms
CONNECTION_TABLE_NAME=Connections

At last, run the following command to package our Lambda function to S3:

make deploy

See Serverless Application Model (SAM) HOWTO Guide for more details in how to get started.

After deployment is complete you can run the following command to retrieve the API Gateway Endpoint URL:

make describe-stack

Connect to API Gateway Endpoint URL using wscat (WebSocket CLI client)

$ npm install -g wscat
$ wscat $(make describe-stack | jq -r '.[][] | select(.OutputKey == "WebSocketURI") | .OutputValue')

License

Apache License 2.0

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].