Repository: oney/react-native-webrtc-server Branch: master Commit: 42e15a3458a4 Files: 7 Total size: 11.4 KB Directory structure: gitextract_si75swfa/ ├── .gitignore ├── README.md ├── app.js ├── fake-keys/ │ ├── certificate.pem │ └── privatekey.pem ├── index.html └── package.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ .DS_Store node_modules commit_images ================================================ FILE: README.md ================================================ # react-native-webrtc-server The signaling server for https://github.com/oney/react-native-webrtc You can checkout this demo https://github.com/oney/RCTWebRTCDemo Demo server: https://react-native-webrtc.herokuapp.com/ # Get started 1. `npm install` 2. `npm start` ================================================ FILE: app.js ================================================ var express = require('express'); var app = express(); var fs = require('fs'); var open = require('open'); var options = { key: fs.readFileSync('./fake-keys/privatekey.pem'), cert: fs.readFileSync('./fake-keys/certificate.pem') }; var serverPort = (process.env.PORT || 4443); var https = require('https'); var http = require('http'); var server; if (process.env.LOCAL) { server = https.createServer(options, app); } else { server = http.createServer(app); } var io = require('socket.io')(server); var roomList = {}; app.get('/', function(req, res){ console.log('get /'); res.sendFile(__dirname + '/index.html'); }); server.listen(serverPort, function(){ console.log('server up and running at %s port', serverPort); if (process.env.LOCAL) { open('https://localhost:' + serverPort) } }); function socketIdsInRoom(name) { var socketIds = io.nsps['/'].adapter.rooms[name]; if (socketIds) { var collection = []; for (var key in socketIds) { collection.push(key); } return collection; } else { return []; } } io.on('connection', function(socket){ console.log('connection'); socket.on('disconnect', function(){ console.log('disconnect'); if (socket.room) { var room = socket.room; io.to(room).emit('leave', socket.id); socket.leave(room); } }); socket.on('join', function(name, callback){ console.log('join', name); var socketIds = socketIdsInRoom(name); callback(socketIds); socket.join(name); socket.room = name; }); socket.on('exchange', function(data){ console.log('exchange', data); data.from = socket.id; var to = io.sockets.connected[data.to]; to.emit('exchange', data); }); }); ================================================ FILE: fake-keys/certificate.pem ================================================ -----BEGIN CERTIFICATE----- MIICjTCCAfYCCQC8xCdh8aBfxDANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC VVMxEzARBgNVBAgTCldhc2hpbmd0b24xETAPBgNVBAcTCFJpY2hsYW5kMQ0wCwYD VQQKFAQmeWV0MQswCQYDVQQLFAImITEVMBMGA1UEAxMMTmF0aGFuIEZyaXR6MSAw HgYJKoZIhvcNAQkBFhFuYXRoYW5AYW5keWV0Lm5ldDAeFw0xMTEwMTkwNjI2Mzha Fw0xMTExMTgwNjI2MzhaMIGKMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGlu Z3RvbjERMA8GA1UEBxMIUmljaGxhbmQxDTALBgNVBAoUBCZ5ZXQxCzAJBgNVBAsU AiYhMRUwEwYDVQQDEwxOYXRoYW4gRnJpdHoxIDAeBgkqhkiG9w0BCQEWEW5hdGhh bkBhbmR5ZXQubmV0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDRKUxB1pLV RQ/dcUEP1p1oTIg0GoEvMPl6s7kC2Mroyovn/FaCzsgvwYhuwIeA6qgYoNIkSkXM QRmtfTpBvJNqM6A7jpUUmYuaUgqdrh5GZ5FGJjgAGIRJBWtovqxnCaHcmBYxlj0o /nxDmzgK655WBso7nwpixrzbsV3x7ZG45QIDAQABMA0GCSqGSIb3DQEBBQUAA4GB ALeMY0Og6SfSNXzvATyR1BYSjJCG19AwR/vafK4vB6ejta37TGEPOM66BdtxH8J7 T3QuMki9Eqid0zPATOttTlAhBeDGzPOzD4ohJu55PwY0jTJ2+qFUiDKmmCuaUbC6 JCt3LWcZMvkkMfsk1HgyUEKat/Lrs/iaVU6TDMFa52v5 -----END CERTIFICATE----- ================================================ FILE: fake-keys/privatekey.pem ================================================ -----BEGIN RSA PRIVATE KEY----- MIICXQIBAAKBgQDRKUxB1pLVRQ/dcUEP1p1oTIg0GoEvMPl6s7kC2Mroyovn/FaC zsgvwYhuwIeA6qgYoNIkSkXMQRmtfTpBvJNqM6A7jpUUmYuaUgqdrh5GZ5FGJjgA GIRJBWtovqxnCaHcmBYxlj0o/nxDmzgK655WBso7nwpixrzbsV3x7ZG45QIDAQAB AoGBAJQzUtkDlJ6QhKE+8f6q7nVMZOWmMgqiBOMwHNMrkPpJKcCCRzoAEk/kLSts N5bcraZlrQARsEr9hZgrtu+FEl1ROdKc6B3bJ5B6FigwY7m8/Z3+YdgwqV6NJGQk 3twY4PoJEdeZ7GX2QnX8RDjyFvLaZ12jiDic30Nrn1gwvOCxAkEA9Dp5r9yg4DT/ V4SE5+NPCJmeV7zwfW3XUQHWD4TaFbOCjnjWB/BnrrjXhvd3VNzwajrJvqq/UiM4 bAG4VLz0CwJBANs+IYm3tYfeP5YsYJVMOJ5TcOAZ3T9jMF+QC9/ObwepW4D1woRr rCYxe01JyZpqqWnfeIUoJ70QL9uP8AgTrM8CQFFqGNymKL71C9XJ6GBA5zzPsPhA lM7LSgbIHOrJd8XaNIB4CalV28pj9f0ZC5+vkzlmZZB47RRdh1aB8EfXQWcCQGa8 KI8WLNRsCrPeO6v6OZXHV99Lf2eSnTpKj6XiYBjg/WXiw7G1mseS7Ep9RyE61gQs mZccB/MKQMLMIhhGz/UCQQDog5KBVaMhwrw1hwZ5gDyZs2YrE75522BnAU1ajQj+ VmTkcBwCtfnbXsWcHnYQnLlvz2Bi9ov2JncmJ5F1kiIw -----END RSA PRIVATE KEY----- ================================================ FILE: index.html ================================================ react-native-webrtc server
================================================ FILE: package.json ================================================ { "name": "react-native-webrtc-server", "version": "0.0.1", "description": "react-native-webrtc server", "main": "app.js", "author": "Oney", "engines": { "node": "v4.1.0" }, "scripts": { "open": "heroku open", "logs": "heroku logs --tail", "deploy": "git push heroku master", "start": "LOCAL=TRUE node app.js" }, "dependencies": { "express": "^4.11.2", "open": "0.0.5", "socket.io": "1.3.4" } }