diff --git a/internal/signaling/peer.go b/internal/signaling/peer.go index 8336e1b..c52f4a9 100644 --- a/internal/signaling/peer.go +++ b/internal/signaling/peer.go @@ -187,14 +187,14 @@ func (p *Peer) HandleHelloPacket(ctx context.Context, packet HelloPacket) error hasReconnected := false var reconnectingLobbies []string if packet.ID != "" && packet.Secret != "" { - logger.Info("peer reconnecting", zap.String("game", packet.Game), zap.String("peer", packet.ID)) + logger.Info("peer reconnecting", zap.String("game", packet.Game), zap.String("peer", packet.ID), zap.String("version", packet.Version)) var err error hasReconnected, reconnectingLobbies, err = p.retrievedIDCallback(ctx, packet.ID, packet.Secret, packet.Game) if err != nil { return fmt.Errorf("unable to reconnect: %w", err) } if !hasReconnected { - logger.Info("peer failed reconnecting", zap.String("game", p.Game), zap.String("peer", p.ID)) + logger.Info("peer failed reconnecting", zap.String("game", p.Game), zap.String("peer", p.ID), zap.String("version", packet.Version)) err := fmt.Errorf("failed to reconnect, missing pid or invalid secret") err = util.ErrorWithCode(err, "reconnect-failed") @@ -213,7 +213,7 @@ func (p *Peer) HandleHelloPacket(ctx context.Context, packet HelloPacket) error p.Game = packet.Game p.ID = util.GeneratePeerID(ctx) p.Secret = util.GenerateSecret(ctx) - logger.Info("peer connecting", zap.String("game", p.Game), zap.String("peer", p.ID)) + logger.Info("peer connecting", zap.String("game", p.Game), zap.String("peer", p.ID), zap.String("version", packet.Version)) if err := p.store.CreatePeer(ctx, p.ID, p.Secret, p.Game); err != nil { return fmt.Errorf("unable to create peer: %w", err) @@ -231,11 +231,11 @@ func (p *Peer) HandleHelloPacket(ctx context.Context, packet HelloPacket) error if hasReconnected { for _, lobbyID := range reconnectingLobbies { - logger.Info("peer rejoining lobby", zap.String("game", p.Game), zap.String("peer", p.ID), zap.String("lobby", p.Lobby)) + logger.Info("peer rejoining lobby", zap.String("game", p.Game), zap.String("peer", p.ID), zap.String("lobby", p.Lobby), zap.String("version", packet.Version)) p.Lobby = lobbyID p.store.Subscribe(ctx, p.ForwardMessage, p.Game, p.Lobby, p.ID) - go metrics.Record(ctx, "client", "reconnected", p.Game, p.ID, p.Lobby) + go metrics.Record(ctx, "client", "reconnected", p.Game, p.ID, p.Lobby, "version", packet.Version) // We just reconnected, and we might be the only peer in the lobby. // So do an election to make sure we then become the leader. @@ -264,7 +264,7 @@ func (p *Peer) HandleHelloPacket(ctx context.Context, packet HelloPacket) error } } } else { - go metrics.Record(ctx, "client", "connected", p.Game, p.ID, p.Lobby) + go metrics.Record(ctx, "client", "connected", p.Game, p.ID, p.Lobby, "version", packet.Version) } return nil diff --git a/internal/signaling/types.go b/internal/signaling/types.go index 6bf3935..03dceb0 100644 --- a/internal/signaling/types.go +++ b/internal/signaling/types.go @@ -15,9 +15,10 @@ type PingPacket struct { type HelloPacket struct { Type string `json:"type"` - Game string `json:"game"` - ID string `json:"id"` - Secret string `json:"secret"` + Game string `json:"game"` + ID string `json:"id"` + Secret string `json:"secret"` + Version string `json:"version,omitempty"` } type WelcomePacket struct { diff --git a/lib/signaling.ts b/lib/signaling.ts index d30dedf..ebeb2c7 100644 --- a/lib/signaling.ts +++ b/lib/signaling.ts @@ -2,6 +2,7 @@ import { EventEmitter } from 'eventemitter3' import Network from './network' import Peer from './peer' import { LobbyListEntry, SignalingPacketTypes } from './types' +import { version } from '../package.json' interface SignalingListeners { credentials: (data: SignalingPacketTypes) => void | Promise @@ -50,7 +51,8 @@ export default class Signaling extends EventEmitter { type: 'hello', game: this.network.gameID, id: this.receivedID, - secret: this.receivedSecret + secret: this.receivedSecret, + version }) } const onError = (e: Event): void => { diff --git a/lib/types.ts b/lib/types.ts index f5eafa8..f321686 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -73,6 +73,7 @@ export interface HelloPacket extends Base { game: string id?: string secret?: string + version?: string } export interface WelcomePacket extends Base {