support query parameters

This commit is contained in:
Kevin Jahns 2020-02-18 15:17:27 -06:00
parent 0dd875885a
commit 68d00c0a92
4 changed files with 32 additions and 23 deletions

View File

@ -171,7 +171,7 @@ const pingTimeout = 30000
* @param {any} req
* @param {any} opts
*/
exports.setupWSConnection = (conn, req, { docName = req.url.slice(1), gc = true } = {}) => {
exports.setupWSConnection = (conn, req, { docName = req.url.slice(1).split('?')[0], gc = true } = {}) => {
conn.binaryType = 'arraybuffer'
// get doc, create if it does not exist yet
const doc = map.setIfUndefined(docs, docName, () => {

33
package-lock.json generated
View File

@ -11,9 +11,9 @@
"dev": true
},
"@types/node": {
"version": "13.1.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.6.tgz",
"integrity": "sha512-Jg1F+bmxcpENHP23sVKkNuU3uaxPnsBMW0cLjleiikFKomJQbsn0Cqk2yDvQArqzZN6ABfBkZ0To7pQ8sLdWDg==",
"version": "13.7.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.2.tgz",
"integrity": "sha512-uvilvAQbdJvnSBFcKJ2td4016urcGvsiR+N4dHGU87ml8O2Vl6l+ErOi9w0kXSPiwJ1AYlIW+0pDXDWWMOiWbw==",
"dev": true
},
"acorn": {
@ -976,11 +976,18 @@
}
},
"lib0": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.3.tgz",
"integrity": "sha512-J1Gw9PT78tO3QODgvzk9NVTXTXTsru9LKq+iPOdWw5s1/QiapUKmCJMCWBrNSGkJ0f3WQkZJtGzn3azJwMDdeg==",
"version": "0.2.15",
"resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.15.tgz",
"integrity": "sha512-wLwuTNNgtC7EQH0b3w4iqpts69TRFVur74Wta7jwgS2w+r/vPLuGcsBA16VoPgBYME7oxDSjEesJw9p/gHmFEg==",
"requires": {
"isomorphic.js": "^0.1.0"
"isomorphic.js": "^0.1.3"
},
"dependencies": {
"isomorphic.js": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.1.3.tgz",
"integrity": "sha512-pabBRLDwYefSsNS+qCazJ97o7P5xDTrNoxSYFTM09JlZTxPrOEPGKekwqUy3/Np4C4PHnVUXHYsZPOix0jELsA=="
}
}
},
"load-json-file": {
@ -1387,9 +1394,9 @@
}
},
"rollup": {
"version": "1.29.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-1.29.0.tgz",
"integrity": "sha512-V63Iz0dSdI5qPPN5HmCN6OBRzBFhMqNWcvwgq863JtSCTU6Vdvqq6S2fYle/dSCyoPrBkIP3EIr1RVs3HTRqqg==",
"version": "1.31.1",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-1.31.1.tgz",
"integrity": "sha512-2JREN1YdrS/kpPzEd33ZjtuNbOuBC3ePfuZBdKEybvqcEcszW1ckyVqzcEiEe0nE8sqHK+pbJg+PsAgRJ8+1dg==",
"dev": true,
"requires": {
"@types/estree": "*",
@ -1648,9 +1655,9 @@
}
},
"typescript": {
"version": "3.7.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz",
"integrity": "sha512-A25xv5XCtarLwXpcDNZzCGvW2D1S3/bACratYBx2sax8PefsFhlYmkQicKHvpYflFS8if4zne5zT5kpJ7pzuvw==",
"version": "3.7.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.5.tgz",
"integrity": "sha512-/P5lkRXkWHNAbcJIiHPfRoKqyd7bsyCma1hZNUGfn20qm64T6ZBlrzprymeu918H+mB/0rIg2gGK/BXkhhYgBw==",
"dev": true
},
"uniq": {

View File

@ -40,14 +40,14 @@
]
},
"dependencies": {
"lib0": "^0.2.3",
"lib0": "^0.2.15",
"y-protocols": "^0.2.0"
},
"devDependencies": {
"rollup": "^1.29.0",
"rollup": "^1.31.1",
"rollup-cli": "^1.0.9",
"standard": "^12.0.1",
"typescript": "^3.7.4",
"typescript": "^3.7.5",
"yjs": "13.0.0-105"
},
"peerDependenies": {

View File

@ -19,6 +19,7 @@ import * as awarenessProtocol from 'y-protocols/awareness.js'
import * as mutex from 'lib0/mutex.js'
import { Observable } from 'lib0/observable.js'
import * as math from 'lib0/math.js'
import * as url from 'lib0/url.js'
const messageSync = 0
const messageQueryAwareness = 3
@ -164,18 +165,19 @@ const broadcastMessage = (provider, buf) => {
*/
export class WebsocketProvider extends Observable {
/**
* @param {string} url
* @param {string} serverUrl
* @param {string} roomname
* @param {Y.Doc} doc
* @param {{connect:boolean,awareness:awarenessProtocol.Awareness,db:any|null}} conf
* @param {{connect:boolean,awareness:awarenessProtocol.Awareness,db:any|null,params:Object<string,string>}} conf
*/
constructor (url, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), db = null } = /** @type {any} */ ({})) {
constructor (serverUrl, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), db = null, params = {} } = /** @type {any} */ ({})) {
super()
// ensure that url is always ends with /
while (url[url.length - 1] === '/') {
url = url.slice(0, url.length - 1)
while (serverUrl[serverUrl.length - 1] === '/') {
serverUrl = serverUrl.slice(0, serverUrl.length - 1)
}
this.url = url + '/' + roomname
const encodedParams = url.encodeQueryParams(params)
this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '&' + encodedParams)
this.roomname = roomname
this.doc = doc
/**