quickrtc-server
v2.0.1
Published
QuickRTC Server - High-level WebRTC server abstraction
Maintainers
Readme
quickrtc-server
MediaSoup WebRTC server for QuickRTC conferencing.
Installation
npm install quickrtc-serverQuick 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
- HTTPS - WebRTC requires secure context
- Public IP - Set
announcedIpto your server's public IP - Firewall - Open port 443 (TCP) and 40000-49999 (UDP)
License
MIT
