socket-rtc

1.0.3 • Public • Published

SocketRTC

SocketRTC is a library that combines WebRTC and WebSocket to facilitate peer-to-peer communication. It allows for real-time communication between browsers and Node.js environments using WebRTC for direct peer-to-peer connections and WebSocket for signaling.

Features

  • Peer-to-peer communication using WebRTC
  • Signaling through WebSocket
  • Support for both browser and Node.js environments
  • Event-based architecture

Installation

First, ensure you have Node.js installed. Then, install the package as shown below

npm install socket-rtc

This package works in the browser with browserify.

Usage

Server

const express = require('express');
const http = require('http');
const path = require('path');
const SocketRTC = require('socket-rtc');

const PORT = 8002;

const app = express();
app.use(express.static(path.join(__dirname)));

const server = http.createServer(app);

const rtc = new SocketRTC({ server });

rtc.on('connect', ({ id, pc }) => {
    console.log('Connected to peer with id:', id);
    rtc.send(JSON.stringify({ from: 'sserver',data: 'Hello, Peer! from node' }));
});

rtc.on('message', (data) => {
    console.log('Received message:', JSON.parse(data));
});

app.get('/', (req, res) => {
    res.sendFile(path.join(__dirname, 'index.html'));
});

server.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

Client

Bundle the js file using browserify or any other bundler.

  • Install browserify
npm install -g browserify
const SocketRTC = require('socket-rtc');

let rtc = null;
let id;

id = 'user' + Math.floor(Math.random() * 10000);
rtc = new SocketRTC({ url: 'http://localhost:8002' }, id);

rtc.on('connect', () => {
    console.log('connected');
    rtc.send(JSON.stringify({ from: id, data: 'Hello, Peer!' }));
});
rtc.on('disconnect', () => {
    console.log('disconnected')
});

rtc.on('message', (data) => {
    if(JSON.parse(data).from !== id)
        console.log(`message received: ${JSON.parse(data).data}`);
});

rtc.on('error', (err) => {
    console.error(err)
});
  • Bundle your JavaScript with Browserify: Use Browserify to bundle your JavaScript file so that it can be used in the browser.
browserify main.js -o bundle.js
  • Include the bundled JavaScript file in your HTML file.
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SocketRTC</title>
</head>
<body>
    <h1>SocketRTC Client</h1>
    <script src="bundle.js"></script>
</body>
</html>

Package Sidebar

Install

npm i socket-rtc

Weekly Downloads

9

Version

1.0.3

License

ISC

Unpacked Size

16.2 kB

Total Files

8

Last publish

Collaborators

  • mahesh.naik