openbrawl-client/Protocol/Messages/HeartbeatMessage.js
2025-06-21 00:41:45 +03:00

50 lines
1019 B
JavaScript

const ByteStream = require("../../ByteStream/ByteStream")
class HeartbeatMessage {
constructor(config, crypto, logger, data = null) {
this.config = config
this.crypto = crypto
this.logger = logger
this.type = 0
this.data = data
}
encode() {
const stream = new ByteStream()
const timestamp = Math.floor(Date.now() / 1000)
stream.writeUInt32(timestamp)
// Client status
stream.writeUInt8(1) // 1 = alive
stream.writeUInt32(this.data?.sequence || 0)
this.logger.debug(`Encoding HeartbeatMessage`, {
timestamp: timestamp,
sequence: this.data?.sequence || 0,
})
return stream.getBuffer()
}
decode(buffer) {
const stream = new ByteStream(buffer)
const data = {
timestamp: stream.readUInt32(),
status: stream.readUInt8(),
sequence: stream.readUInt32(),
}
this.logger.debug(`Decoded HeartbeatMessage`, data)
return data
}
getType() {
return this.type
}
}
module.exports = HeartbeatMessage