log locally for transport related logs to avoid stack overflow

This commit is contained in:
evanpelle
2024-12-18 10:53:26 -08:00
parent d11e5bc119
commit e3ea353b22
4 changed files with 34 additions and 20 deletions
+1 -1
View File
@@ -242,7 +242,7 @@
* better error logging in server DONE 12/16/2024
* store and archive player cookies DONE 12/17/2024
* make ips less precise for user safety DONE 12/17/2024
* send client logs back to server
* send client logs back to server
* seperate server config from client config
* right click brings up player info menu
* give naval units health
+24 -10
View File
@@ -1,3 +1,11 @@
declare global {
interface Console {
localLog: typeof console.log;
localWarn: typeof console.warn;
localError: typeof console.error;
}
}
import { EventBus } from "../core/EventBus"
import { LogSeverity } from "../core/Schemas"
import { SendLogEvent } from "./Transport"
@@ -15,22 +23,28 @@ export function initializeLogSender(eventBus: EventBus) {
const originalWarn = console.warn
const originalError = console.error
const log = (msg: string): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Info, msg))
originalLog.call(console, msg) // Use the original method
// Define networked logging functions (both local and remote)
const log = (...args: any[]): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Info, args.join(' ')))
originalLog.apply(console, args)
}
const warn = (msg: string): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Warn, msg))
originalWarn.call(console, msg) // Use the original method
const warn = (...args: any[]): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Warn, args.join(' ')))
originalWarn.apply(console, args)
}
const error = (msg: string): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Error, msg))
originalError.call(console, msg) // Use the original method
const error = (...args: any[]): void => {
eventBus.emit(new SendLogEvent(LogSeverity.Error, args.join(' ')))
originalError.apply(console, args)
}
// Replace console methods
// Store local-only logging functions
console.localLog = originalLog.bind(console)
console.localWarn = originalWarn.bind(console)
console.localError = originalError.bind(console)
// Replace main console methods with networked versions
console.log = log
console.warn = warn
console.error = error
+8 -8
View File
@@ -175,7 +175,7 @@ export class Transport {
this.socket.onopen = () => {
console.log('Connected to game server!');
while (this.buffer.length > 0) {
console.log('sending dropped message')
console.localLog('sending dropped message')
this.sendMsg(this.buffer.pop())
}
onconnect()
@@ -184,13 +184,13 @@ export class Transport {
onmessage(ServerMessageSchema.parse(JSON.parse(event.data)))
};
this.socket.onerror = (err) => {
console.error('Socket encountered error: ', err, 'Closing socket');
console.localError('Socket encountered error: ', err, 'Closing socket');
this.socket.close();
};
this.socket.onclose = (event: CloseEvent) => {
console.log(`WebSocket closed. Code: ${event.code}, Reason: ${event.reason}`);
if (event.code != 1000) {
console.log(`reconnecting`)
console.localLog(`reconnecting`)
this.connect(onconnect, onmessage)
}
};
@@ -236,8 +236,8 @@ export class Transport {
console.log('on stop: leaving game')
this.socket.close()
} else {
console.log('WebSocket is not open. Current state:', this.socket.readyState);
console.log('attempting reconnect')
console.localLog('WebSocket is not open. Current state:', this.socket.readyState);
console.localError('attempting reconnect')
}
this.socket.onclose = (event: CloseEvent) => { }
}
@@ -368,8 +368,8 @@ export class Transport {
})
this.sendMsg(JSON.stringify(msg))
} else {
console.log('WebSocket is not open. Current state:', this.socket.readyState);
console.log('attempting reconnect')
console.localLog('WebSocket is not open. Current state:', this.socket.readyState);
console.localLog('attempting reconnect')
}
}
@@ -378,7 +378,7 @@ export class Transport {
this.localServer.onMessage(msg)
} else {
if (this.socket.readyState == WebSocket.CLOSED || this.socket.readyState == WebSocket.CLOSED) {
console.warn('socket not ready, closing and trying later')
console.localWarn('socket not ready, closing and trying later')
this.socket.close()
this.socket = null
this.connectRemote(this.onconnect, this.onmessage)
+1 -1
View File
@@ -16,7 +16,7 @@ export const devConfig = new class extends DefaultConfig {
return 95
}
numSpawnPhaseTurns(gameType: GameType): number {
return 40
return gameType == GameType.Singleplayer ? 40 : 100
// return 100
}
gameCreationRate(): number {