nips/100.md

80 lines
1.5 KiB
Markdown
Raw Normal View History

2023-03-13 19:58:18 -04:00
# NIP-100
## WebRTC
`draft` `optional` `author:jacany`
This NIP defines how to do WebRTC communication over nostr
### Broadcasting that you are present
Announces that you are here, and ready to connect to others.
The connection ID is inferred from the provided pubkey.
```json
{
"kind": 25050,
"pubkey": "<sender pubkey>",
"tags": [
["type", "connect"]
]
}
```
### Closing
```json
{
"kind": 25050,
"pubkey": "<sender pubkey>",
"tags": [
["type", "disconnect"]
]
}
```
### Offering to connect
Used when responding to a `type:connect`. Offering to connect to that peer.
```json
{
"kind": 25050,
"pubkey": "<sender pubkey>",
"tags": [
["type", "offer"],
["p", "<reciever pubkey>"]
],
"content": {
"offer": "<offer>",
"type": "offer"
}
}
```
### Answering an Offer
```json
{
"kind": 25050,
"pubkey": "<sender pubkey>",
"tags": [
["type", "answer"],
["p", "<reciever pubkey>"]
],
"content": {
"sdp": "<sdp>",
"type": "answer"
}
}
```
### Broadcasting ICE Candidate
```json
{
"kind": 25050,
"pubkey": "<sender pubkey>",
"tags": [
["type", "answer"],
["p", "<reciever pubkey>"]
],
"content": {
"candidate": "<sdp>",
<misc>
}
}
```
Essentially, just directly feed what comes out of the WebRTC functions straight into the `content` field. It makes things cleaner and easier.