fix game
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 8m13s
All checks were successful
Dynamic Branch Deploy / build-and-deploy (push) Successful in 8m13s
This commit is contained in:
@@ -27,6 +27,8 @@ type wsConn struct {
|
||||
|
||||
// disconnectFromServer trennt die bestehende WebSocket-Verbindung sauber
|
||||
func (g *Game) disconnectFromServer() {
|
||||
// Generation erhöhen → alle noch laufenden Handler der alten Verbindung werden ignoriert
|
||||
g.connGeneration++
|
||||
if g.wsConn != nil {
|
||||
g.wsConn.ws.Call("close")
|
||||
g.wsConn = nil
|
||||
@@ -53,8 +55,16 @@ func (g *Game) connectToServer() {
|
||||
connected: false,
|
||||
}
|
||||
|
||||
// Generation zum Zeitpunkt der Verbindung festhalten.
|
||||
// Wenn disconnectFromServer() aufgerufen wird, erhöht sich g.connGeneration
|
||||
// und alle Handler dieser alten Verbindung geben sofort nil zurück.
|
||||
myGen := g.connGeneration
|
||||
|
||||
// OnOpen Handler
|
||||
ws.Call("addEventListener", "open", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||
if g.connGeneration != myGen {
|
||||
return nil // veraltete Verbindung
|
||||
}
|
||||
log.Println("✅ WebSocket verbunden!")
|
||||
conn.connected = true
|
||||
g.connected = true
|
||||
@@ -63,6 +73,9 @@ func (g *Game) connectToServer() {
|
||||
|
||||
// OnMessage Handler
|
||||
ws.Call("addEventListener", "message", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||
if g.connGeneration != myGen {
|
||||
return nil // veraltete Verbindung – Nachrichten ignorieren
|
||||
}
|
||||
if len(args) == 0 {
|
||||
return nil
|
||||
}
|
||||
@@ -149,6 +162,9 @@ func (g *Game) connectToServer() {
|
||||
|
||||
// OnError Handler
|
||||
ws.Call("addEventListener", "error", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||
if g.connGeneration != myGen {
|
||||
return nil // veraltete Verbindung
|
||||
}
|
||||
log.Println("❌ WebSocket Fehler!")
|
||||
conn.connected = false
|
||||
g.connected = false
|
||||
@@ -157,6 +173,9 @@ func (g *Game) connectToServer() {
|
||||
|
||||
// OnClose Handler
|
||||
ws.Call("addEventListener", "close", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||
if g.connGeneration != myGen {
|
||||
return nil // veraltete Verbindung – kein g.connected überschreiben
|
||||
}
|
||||
log.Println("🔌 WebSocket geschlossen")
|
||||
conn.connected = false
|
||||
g.connected = false
|
||||
|
||||
Reference in New Issue
Block a user