Sobes.tech
Senior

How to guarantee message order in a chat?

sobes.tech AI

Answer from AI

To ensure message order in a chat, several approaches can be used:

  1. Message numbering — each message receives a unique sequential number upon sending. Clients sort messages by this number.

  2. Using high-precision timestamps — for example, nanosecond timestamps, but this is less reliable due to possible clock desynchronizations.

  3. Message queues with guaranteed order — for example, Kafka or RabbitMQ, which ensure sequential message delivery.

  4. Server logic — the server accepts messages, assigns them a sequential index, and sends them to clients in the correct order.

Example in Go with message numbering:

 type Message struct {
     Sequence int64
     Content  string
 }

 var sequenceCounter int64 = 0

 func SendMessage(content string) Message {
     sequenceCounter++
     msg := Message{Sequence: sequenceCounter, Content: content}
     // send msg to clients
     return msg
 }

Thus, clients can sort messages by the Sequence field, guaranteeing the correct order.

How to guarantee message order in a chat? — Golang - sobes.tech