mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 11:52:38 +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
82ede035d6
commit
bc1dec245b
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