Persistent connections even if client disconnects
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
import { EventEmitter } from '$lib/utils/EventEmitter';
|
||||
import { GmcpHandler } from '$lib/gmcp/GmcpHandler';
|
||||
import { get } from 'svelte/store';
|
||||
import { connectionSettings } from '$lib/stores/mudStore';
|
||||
|
||||
// IAC codes for telnet negotiation
|
||||
enum TelnetCommand {
|
||||
@@ -130,6 +132,12 @@ export class MudConnection extends EventEmitter {
|
||||
console.log(`Reconnecting with session ID: ${this.persistence.sessionId}`);
|
||||
}
|
||||
|
||||
// Include connection settings in URL
|
||||
const settings = get(connectionSettings);
|
||||
wsUrl += `&persistenceTimeout=${settings.persistenceTimeoutMinutes}`;
|
||||
wsUrl += `&maxBufferMessages=${settings.maxBufferMessages}`;
|
||||
wsUrl += `&maxBufferSizeKB=${settings.maxBufferSizeKB}`;
|
||||
|
||||
console.log(`Connecting to WebSocket server: ${wsUrl}`);
|
||||
|
||||
this.webSocket = new WebSocket(wsUrl);
|
||||
@@ -241,7 +249,16 @@ export class MudConnection extends EventEmitter {
|
||||
// Handle other system messages as needed
|
||||
if (systemData.type === 'session_resumed') {
|
||||
console.log('Session successfully resumed');
|
||||
this.emit('session_resumed');
|
||||
if (systemData.messagesReplayed > 0) {
|
||||
console.log(`${systemData.messagesReplayed} messages were replayed`);
|
||||
}
|
||||
this.emit('session_resumed', systemData);
|
||||
} else if (systemData.type === 'message_replay_start') {
|
||||
console.log(`Starting message replay: ${systemData.messageCount} messages from ${systemData.timespan}ms ago`);
|
||||
this.emit('message_replay_start', systemData);
|
||||
} else if (systemData.type === 'message_replay_complete') {
|
||||
console.log('Message replay complete');
|
||||
this.emit('message_replay_complete');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error parsing system message:', error);
|
||||
|
||||
Reference in New Issue
Block a user