JSPM

quickrtc-server

2.0.1
    • ESM via JSPM
    • ES Module Entrypoint
    • Export Map
    • Keywords
    • License
    • Repository URL
    • TypeScript Types
    • README
    • Created
    • Published
    • Downloads 338
    • Score
      100M100P100Q70148F
    • License ISC

    QuickRTC Server - High-level WebRTC server abstraction

    Package Exports

    • quickrtc-server
    • quickrtc-server/dist/index.js

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (quickrtc-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    quickrtc-server

    MediaSoup WebRTC server for QuickRTC conferencing.

    Installation

    npm install quickrtc-server

    Quick Start

    import express from "express";
    import { createServer } from "https";
    import { readFileSync } from "fs";
    import { Server as SocketIOServer } from "socket.io";
    import { QuickRTCServer } from "quickrtc-server";
    
    const app = express();
    
    const httpsServer = createServer({
      key: readFileSync("key.pem"),
      cert: readFileSync("cert.pem"),
    }, app);
    
    const socketServer = new SocketIOServer(httpsServer, {
      cors: { origin: "*" },
    });
    
    const mediaServer = new QuickRTCServer({
      httpServer: httpsServer,
      socketServer,
    });
    
    await mediaServer.start();
    httpsServer.listen(3000);

    Configuration

    const server = new QuickRTCServer({
      httpServer: httpsServer,
      socketServer: socketIOServer,
      
      // MediaSoup config (optional - sensible defaults provided)
      quickrtcConfig: {
        // Required for production: set your public IP
        webRtcServerOptions: {
          listenInfos: [{
            ip: "0.0.0.0",
            announcedIp: process.env.PUBLIC_IP,
          }],
        },
        // Optional: customize ports
        workerSettings: {
          rtcMinPort: 40000,
          rtcMaxPort: 49999,
        },
      },
    });

    API

    // Lifecycle
    await server.start();
    await server.stop();
    
    // Conferences
    server.getConferences();                      // List all
    server.getConference(conferenceId);           // Get one
    await server.closeConference(conferenceId);   // Close
    
    // Participants  
    server.getParticipants();                     // List all
    server.getParticipant(participantId);         // Get one
    await server.kickParticipant(participantId);  // Remove
    
    // Messaging
    server.broadcastToConference(conferenceId, "event", data);
    server.sendToParticipant(participantId, "event", data);
    
    // Stats
    server.getStats(); // { uptime, conferenceCount, participantCount }

    Events

    server.on("conferenceCreated", (e) => console.log(e.detail.conference.id));
    server.on("conferenceDestroyed", (e) => console.log(e.detail.conferenceId));
    server.on("participantJoined", (e) => console.log(e.detail.participant.name));
    server.on("participantLeft", (e) => console.log(e.detail.participant.name));

    Production Requirements

    1. HTTPS - WebRTC requires secure context
    2. Public IP - Set announcedIp to your server's public IP
    3. Firewall - Open port 443 (TCP) and 40000-49999 (UDP)

    License

    MIT