mirror of
https://github.com/umap-project/umap.git
synced 2025-04-28 19:42:36 +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) {
|
||||
this.map = map
|
||||
this.receiver = new MessagesDispatcher(this.map)
|
||||
|
||||
this._initialize()
|
||||
}
|
||||
_initialize() {
|
||||
|
@ -15,6 +14,13 @@ export class SyncEngine {
|
|||
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) {
|
||||
this.transport = new WebSocketTransport(webSocketURI, authToken, this.receiver)
|
||||
this.sender = new MessagesSender(this.transport)
|
||||
|
|
|
@ -260,22 +260,13 @@ U.Map = L.Map.extend({
|
|||
|
||||
initSyncEngine: async function () {
|
||||
if (this.options.websocketEnabled == false) return
|
||||
console.log('this.options.syncEnabled', this.options.syncEnabled)
|
||||
if (this.options.syncEnabled != true) {
|
||||
this.sync.stop()
|
||||
} else {
|
||||
// FIXME: Do this directly in the sync engine, which should check if the engine
|
||||
// is already started or not.
|
||||
|
||||
// Get the authentication token from the 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)
|
||||
}
|
||||
const ws_token_uri = this.urls.get('map_websocket_auth_token', {
|
||||
map_id: this.options.umap_id,
|
||||
})
|
||||
await this.sync.authenticate(ws_token_uri, this.options.websocketURI, this.server)
|
||||
}
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in a new issue