go-webrtc-signaling-server Svelte Themes

Go Webrtc Signaling Server

This project is a WebRTC signaling server implemented in Go with FFI bindings for Rust. It handles peer discovery, WebSocket-based signaling, API key authentication, and session management. The client-side WebRTC logic is also managed in Go, while the UI is handled separately using Svelte or Rust.

WebRTC Signaling Server & Client in Go

Objectives

  • A signaling server in Go using WebSockets to help clients find and connect with each other.
  • A WebRTC client in Go that talks to the server and handles ICE candidates and session details.
  • REST API for user authenthication ('/ws', '/register', /updatepassword' and '/regenerate')
  • Sqlite for lightweight and storage
  • End-to-End test using tesify
  • Channel-based conncurreny (no 'sync.' beside using in End-to-End testings)

Overview

This project is a WebRTC signaling server & client implemented in Go using SQLite as the database.

Features

  • WebSocket-based signaling
  • ICE candidate exchange and restart handling
  • Room management and peer discovery
  • DataChannel error handling
  • STUN server configuration
  • User registration, Authentication using API-Key to connect to the websocket, update password and API-Key generation for websocket authentication.
  • Lightweight SQLite

Troubleshooting

Common Issues

1. WebSocket Connection Fails

  • Ensure the server is running and accessible.
  • Check if firewall rules allow WebSocket traffic.

2. ICE Connection Fails

  • Verify STUN server configuration.
  • Check if network restrictions block WebRTC traffic.

Top categories

Loading Svelte Themes