implement logging
This commit is contained in:
parent
75f7b4d35a
commit
8313039459
4 changed files with 43 additions and 25 deletions
18
README.md
18
README.md
|
@ -41,6 +41,24 @@ Peers using the same signalling server will find each other. You can specify sev
|
|||
const provider = new WebrtcProvider('prosemirror', ydoc, { signalling: ['wss://y-webrtc-ckynwnzncc.now.sh', 'ws://localhost:4444'] })
|
||||
```
|
||||
|
||||
### Logging
|
||||
|
||||
`y-webrtc` uses the `lib0/logging.js` logging library. By default this library disables logging. You can enable it by specifying the `log` environment / localStorage variable:
|
||||
|
||||
```js
|
||||
// enable logging for all modules
|
||||
localStorage.log = 'true'
|
||||
// enable logging only for y-webrtc
|
||||
localStorage.log = 'y-webrtc'
|
||||
// by specifying a regex variables
|
||||
localStorage.log = '^y.*'
|
||||
```
|
||||
|
||||
```sh
|
||||
# enable y-webrtc logging in nodejs
|
||||
DEBUG='y-webrtc' node index.js
|
||||
```
|
||||
|
||||
## License
|
||||
Yjs is licensed under the [MIT License](./LICENSE).
|
||||
|
||||
|
|
30
package-lock.json
generated
30
package-lock.json
generated
|
@ -789,8 +789,7 @@
|
|||
"get-browser-rtc": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.0.2.tgz",
|
||||
"integrity": "sha1-u81AyEUaftTvXDc7gWmkCd0dEdk=",
|
||||
"dev": true
|
||||
"integrity": "sha1-u81AyEUaftTvXDc7gWmkCd0dEdk="
|
||||
},
|
||||
"get-stdin": {
|
||||
"version": "6.0.0",
|
||||
|
@ -894,8 +893,7 @@
|
|||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
|
||||
"dev": true
|
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
|
||||
},
|
||||
"inquirer": {
|
||||
"version": "5.2.0",
|
||||
|
@ -1074,10 +1072,9 @@
|
|||
}
|
||||
},
|
||||
"lib0": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.1.4.tgz",
|
||||
"integrity": "sha512-SYuWdjePgd59jd24BdRZeJ9mA/82InL2lE6ED2os+n5LUE6NoWmMxeAlNRTYahHBbJakdcpf/d0wULC4oFAX1w==",
|
||||
"dev": true
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.1.5.tgz",
|
||||
"integrity": "sha512-BsbgxGUp38sPqD+OmmmAVSuWh8f9EQ3RXVa7oGOlW8ux+UtPeKT5uSKvyFM3ufD2DDUk/epYxM5cc//zwYBE9Q=="
|
||||
},
|
||||
"load-json-file": {
|
||||
"version": "2.0.0",
|
||||
|
@ -1164,8 +1161,7 @@
|
|||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
|
||||
},
|
||||
"mute-stream": {
|
||||
"version": "0.0.7",
|
||||
|
@ -1423,14 +1419,12 @@
|
|||
"queue-microtask": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.2.tgz",
|
||||
"integrity": "sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ=="
|
||||
},
|
||||
"randombytes": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.0"
|
||||
}
|
||||
|
@ -1466,7 +1460,6 @@
|
|||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
|
||||
"integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
|
@ -1645,8 +1638,7 @@
|
|||
"safe-buffer": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
|
@ -1691,7 +1683,6 @@
|
|||
"version": "9.6.2",
|
||||
"resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.6.2.tgz",
|
||||
"integrity": "sha512-EOKoImCaqtNvXIntxT1CBBK/3pVi7tMAoJ3shdyd9qk3zLm3QPiRLb/sPC1G2xvKJkJc5fkQjCXqRZ0AknwTig==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^4.0.1",
|
||||
"get-browser-rtc": "^1.0.0",
|
||||
|
@ -1704,7 +1695,6 @@
|
|||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
|
@ -1831,7 +1821,6 @@
|
|||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safe-buffer": "~5.2.0"
|
||||
}
|
||||
|
@ -1950,8 +1939,7 @@
|
|||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
|
||||
"dev": true
|
||||
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
|
||||
},
|
||||
"validate-npm-package-license": {
|
||||
"version": "3.0.4",
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"simple-peer": "^9.6.2",
|
||||
"lib0": "^0.1.4"
|
||||
"lib0": "^0.1.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"rollup": "^1.27.8",
|
||||
|
@ -50,7 +50,7 @@
|
|||
"rollup-plugin-terser": "^5.1.2",
|
||||
"standard": "^12.0.1",
|
||||
"y-protocols": "^0.1.0",
|
||||
"lib0": "^0.1.4",
|
||||
"lib0": "^0.1.5",
|
||||
"yjs": "13.0.0-102"
|
||||
},
|
||||
"peerDependenies": {
|
||||
|
|
|
@ -11,6 +11,10 @@ import Peer from 'simple-peer/simplepeer.min.js'
|
|||
import * as syncProtocol from 'y-protocols/sync.js'
|
||||
import * as awarenessProtocol from 'y-protocols/awareness.js'
|
||||
|
||||
import * as logging from 'lib0/logging.js'
|
||||
|
||||
const log = logging.createModuleLogger('y-webrtc')
|
||||
|
||||
const messageSync = 0
|
||||
const messageQueryAwareness = 3
|
||||
const messageAwareness = 1
|
||||
|
@ -44,6 +48,7 @@ const checkIsSynced = webrtcRoom => {
|
|||
if ((!synced && webrtcRoom.synced) || (synced && !webrtcRoom.synced)) {
|
||||
webrtcRoom.synced = synced
|
||||
webrtcRoom.provider.emit('synced', [{ synced }])
|
||||
log('synced ', logging.BOLD, webrtcRoom.name, logging.UNBOLD, ' with all peers')
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -71,6 +76,7 @@ const readPeerMessage = (peerConn, buf) => {
|
|||
const syncMessageType = syncProtocol.readSyncMessage(decoder, encoder, doc, webrtcRoom.provider)
|
||||
if (syncMessageType === syncProtocol.messageYjsSyncStep2 && !webrtcRoom.synced) {
|
||||
peerConn.syncedRooms.add(roomName)
|
||||
log('synced ', logging.BOLD, roomName, logging.UNBOLD, ' with ', logging.BOLD, peerConn.remotePeerId)
|
||||
checkIsSynced(webrtcRoom)
|
||||
}
|
||||
if (syncMessageType === syncProtocol.messageYjsSyncStep1) {
|
||||
|
@ -122,6 +128,7 @@ export class WebrtcConn {
|
|||
* @param {Array<string>} announcedTopics
|
||||
*/
|
||||
constructor (signalingConn, initiator, remotePeerId, announcedTopics) {
|
||||
log('establishing connection to ', logging.BOLD, remotePeerId)
|
||||
this.remotePeerId = remotePeerId
|
||||
this.closed = false
|
||||
this.connected = false
|
||||
|
@ -137,6 +144,7 @@ export class WebrtcConn {
|
|||
signalingConn.send({ type: 'publish', topics: announcedTopics, to: remotePeerId, from: peerId, messageType: 'signal', data })
|
||||
})
|
||||
this.peer.on('connect', () => {
|
||||
log('connected to ', logging.BOLD, remotePeerId)
|
||||
this.connected = true
|
||||
announcedTopics.forEach(roomName => {
|
||||
const room = webrtcRooms.get(roomName)
|
||||
|
@ -172,8 +180,10 @@ export class WebrtcConn {
|
|||
checkIsSynced(room)
|
||||
})
|
||||
this.peer.destroy()
|
||||
log('closed connection to ', logging.BOLD, remotePeerId)
|
||||
})
|
||||
this.peer.on('error', () => {
|
||||
this.peer.on('error', err => {
|
||||
log('error in connection to ', logging.BOLD, remotePeerId, ': ', err)
|
||||
this.connected = false
|
||||
this.closed = true
|
||||
})
|
||||
|
@ -232,6 +242,8 @@ export class SignallingConn extends ws.WebsocketClient {
|
|||
}
|
||||
}
|
||||
})
|
||||
this.on('connect', () => log(`connected (${url})`))
|
||||
this.on('disconnect', () => log(`disconnect (${url})`))
|
||||
}
|
||||
/**
|
||||
* @param {Array<string>} rooms
|
||||
|
@ -255,7 +267,7 @@ export class WebrtcProvider extends Observable {
|
|||
* @param {Object} [opts]
|
||||
* @param {Array<string>} [opts.signalling]
|
||||
*/
|
||||
constructor (room, doc, { signalling = ['wss://y-webrtc-hrxsloqrim.now.sh'] } = {}) {
|
||||
constructor (room, doc, { signalling = ['wss://y-webrtc-hrxsloqrim.now.sh', 'wss://y-webrtc-signalling-eu.herokuapp.com', 'wss://y-webrtc-signalling-us.herokuapp.com/'] } = {}) {
|
||||
super()
|
||||
this.room = room
|
||||
this.doc = doc
|
||||
|
|
Loading…
Reference in a new issue