mirror of
https://github.com/umap-project/umap.git
synced 2025-05-05 22:11:50 +02:00
chore(sync): Sync engine now retrieves auth token
It's now it's responsability to get the authentication token from the http server and pass it to the websocket server, it will make it possible to redo the roundtrip when getting disconnected.
This commit is contained in:
parent
5c1c93f60e
commit
8e7e071ad5
2 changed files with 11 additions and 14 deletions
|
@ -5,7 +5,6 @@ export class SyncEngine {
|
||||||
constructor(map) {
|
constructor(map) {
|
||||||
this.map = map
|
this.map = map
|
||||||
this.receiver = new MessagesDispatcher(this.map)
|
this.receiver = new MessagesDispatcher(this.map)
|
||||||
|
|
||||||
this._initialize()
|
this._initialize()
|
||||||
}
|
}
|
||||||
_initialize() {
|
_initialize() {
|
||||||
|
@ -15,6 +14,13 @@ export class SyncEngine {
|
||||||
this.upsert = this.update = this.delete = noop
|
this.upsert = this.update = this.delete = noop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async authenticate(tokenURI, webSocketURI, server) {
|
||||||
|
const [response, _, error] = await server.get(tokenURI)
|
||||||
|
if (!error) {
|
||||||
|
this.start(webSocketURI, response.token)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
start(webSocketURI, authToken) {
|
start(webSocketURI, authToken) {
|
||||||
this.transport = new WebSocketTransport(webSocketURI, authToken, this.receiver)
|
this.transport = new WebSocketTransport(webSocketURI, authToken, this.receiver)
|
||||||
this.sender = new MessagesSender(this.transport)
|
this.sender = new MessagesSender(this.transport)
|
||||||
|
|
|
@ -260,22 +260,13 @@ U.Map = L.Map.extend({
|
||||||
|
|
||||||
initSyncEngine: async function () {
|
initSyncEngine: async function () {
|
||||||
if (this.options.websocketEnabled == false) return
|
if (this.options.websocketEnabled == false) return
|
||||||
console.log('this.options.syncEnabled', this.options.syncEnabled)
|
|
||||||
if (this.options.syncEnabled != true) {
|
if (this.options.syncEnabled != true) {
|
||||||
this.sync.stop()
|
this.sync.stop()
|
||||||
} else {
|
} else {
|
||||||
// FIXME: Do this directly in the sync engine, which should check if the engine
|
const ws_token_uri = this.urls.get('map_websocket_auth_token', {
|
||||||
// is already started or not.
|
map_id: this.options.umap_id,
|
||||||
|
})
|
||||||
// Get the authentication token from the server
|
await this.sync.authenticate(ws_token_uri, this.options.websocketURI, this.server)
|
||||||
// And pass it to the sync engine.
|
|
||||||
// FIXME: use `this.urls`
|
|
||||||
const [response, _, error] = await this.server.get(
|
|
||||||
`/map/${this.options.umap_id}/ws-token/`
|
|
||||||
)
|
|
||||||
if (!error) {
|
|
||||||
this.sync.start(this.options.websocketURI, response.token)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue