Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions umap/static/umap/js/modules/sync/websocket.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import { uMapAlert as Alert } from '../../components/alerts/alert.js'
import { translate } from '../i18n.js'

const PONG_TIMEOUT = 5000
const PING_INTERVAL = 30000
const FIRST_CONNECTION_TIMEOUT = 2000
Expand All @@ -14,15 +17,20 @@ export class WebSocketTransport {
}
this.websocket.addEventListener('message', this.onMessage.bind(this))
this.websocket.onclose = () => {
console.log('websocket closed')
console.debug('websocket closed')
if (!this.receiver.closeRequested) {
console.log('Not requested, reconnecting...')
Alert.info(
translate(
'This map has enabled real-time synchronization with other users, but you are currently disconnected. We will try to reconnect in the background and reconcile with other users, but this feature is still experimental, and you might lose data. Have fun!'
)
)
console.debug('Not requested, reconnecting...')
this.receiver.reconnect()
}
}

this.websocket.onerror = (error) => {
console.log('WS ERROR', error)
console.debug('WS ERROR', error)
}

this.ensureOpen = setInterval(() => {
Expand All @@ -38,7 +46,7 @@ export class WebSocketTransport {
// See https://making.close.com/posts/reliable-websockets/ for more details.
this.pingInterval = setInterval(() => {
if (this.websocket.readyState === WebSocket.OPEN) {
console.log('sending ping')
console.debug('sending ping')
this.websocket.send('ping')
this.pongReceived = false
setTimeout(() => {
Expand Down Expand Up @@ -68,7 +76,7 @@ export class WebSocketTransport {
}

close() {
console.log('Closing')
console.debug('Closing')
this.receiver.closeRequested = true
this.websocket.close()
}
Expand Down