https://github.com/mikeal/signal-exchange
WebRTC signal exchange using public keys and socket.io
https://github.com/mikeal/signal-exchange
Last synced: 3 months ago
JSON representation
WebRTC signal exchange using public keys and socket.io
- Host: GitHub
- URL: https://github.com/mikeal/signal-exchange
- Owner: mikeal
- Created: 2016-08-18T00:42:10.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-07-11T22:02:49.000Z (about 8 years ago)
- Last Synced: 2024-10-18T09:13:55.186Z (9 months ago)
- Language: JavaScript
- Size: 38.1 KB
- Stars: 16
- Watchers: 3
- Forks: 2
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Signal Exchange
WebRTC signal exchange by public key.
```
npm install signal-exchange
```Signal exchange uses ECDH public keys as identifiers in the exchange. This
means that peers can "call" each other using public keys and encrypt the
offer messages through the exchange.```javascript
const SimplePeer = require('simple-peer')
const signalExchange = require('signal-exchange')
const sodi = require('sodi')// Generate keypairs w/ sodi.
let user1 = sodi.generate()
let user2 = sodi.generate()let send1 = signalExchange(user1, signal => {
peer1.signal(signal.offer)
})
let send2 = signalExchange(user2, signal => {
var peer2 = new SimplePeer({trickle:false}))
peer2.once('signal', offer => {
send2(signal.from, signal.offer)
})
})let peer1 = new SimplePeer({initiator:true, trickle:false})
peer1.once('signal', offer => {
send1(user2.publicKey, offer) // Send offer to peer2 through exchange
})
```## `signalExchange([url], privateKey, publicKey, onOffer)`
Returns a `send` function.
* **url** *(optional)* The url of the peer exchange. Defaults to
`wss://signalexchange.now.sh` a public exchange hosted on zeit.
* **privateKey** *(required)* hex encoded private key.
* **publicKey** *(required)* hex encoded public key.
* **onOffer** *(required)* function handler for signals sent to your public key### `onOffer(signal)`
* **signal** *Object*
* **to** hex encoded public key.
* **from** hex encoded public key.
* **offer** decrypted offer object, can be passed directly to SimplePeer.## `send(publicKey, offer)`
* **publicKey** *(required)* hex encoded public key.
* **offer** *(required)* offer object from SimplePeer.