y-websockets-server
Version:
Websockets Connector for Yjs (node server)
54 lines (51 loc) • 1.38 kB
JavaScript
/* global Y */
function extend (Y) {
class Connector extends Y.AbstractConnector {
constructor (y, options) {
if (options === undefined) {
throw new Error('Options must not be undefined!')
}
if (options.room == null) {
throw new Error('You must define a room name!')
}
if (options.io == null) {
throw new Error('You must define the socketio serve!')
}
options.role = 'master'
options.forwardAppliedOperations = true
options.generateUserId = true
super(y, options)
this.options = options
this.io = options.io
}
disconnect () {
// throw new Error('You must not disconnect with this connector!')
}
reconnect () {
// throw new Error('You must not disconnect with this connector!')
}
destroy () {
this.io = null
this.options = null
}
send (uid, message) {
message.room = this.options.room
this.io.to(uid).emit('yjsEvent', message)
super.send(uid, message)
}
broadcast (message) {
message.room = this.options.room
this.io.in(this.options.room).emit('yjsEvent', message)
super.broadcast(message)
}
isDisconnected () {
return false
}
}
Y.extend('websockets-server', Connector)
}
module.exports = extend
if (typeof Y !== 'undefined') {
extend(Y)
}