Master Akış ve Algoritmalar
Bu sayfa Micro Socket yaşam döngüsünün master akış şemasını ve alt algoritmalara linkleri içerir.
Master Algoritma Akış Şeması
Aşağıdaki diyagram, bir mesajın yayından istemciye teslimine kadar tüm katmanlarda izlediği yolu gösterir.
Alt Algoritmalar
| Algoritma | Açıklama | Detay sayfası |
|---|---|---|
| Dedup / İdempotency | messageId ile çift işlemeyi engelleme | Dedup & İdempotency |
| ACL | SUBSCRIBE/PUBLISH yetki kontrolü | ACL & Yetkilendirme |
| Sıralama (SeqNo) | Mesaj sırası ve gap/replay | Sıralama & SeqNo |
| Resume | Kesinti sonrası session ve replay | Resume & Replay |
Pseudocode: Gateway Ana Döngü (Özet)
FUNCTION handleMessage(ws, raw):
msg = JSON.parse(raw)
user = getUserId(ws.token)
IF msg.type == "subscribe":
IF NOT aclAllow(user, msg.topic, "read") THEN sendError(ws, "ACL_DENIED"); RETURN
addSubSocket(ws, msg.topic)
RETURN
IF msg.type == "publish":
IF NOT aclAllow(user, msg.topic, "write") THEN sendError(ws, "ACL_DENIED"); RETURN
IF dedupContains(user.id, msg.messageId) THEN sendAck(ws, msg.messageId, "duplicate"); RETURN
dedupAdd(user.id, msg.messageId)
seqNo = nextSeq(msg.topic)
publishToBackbone(msg.topic, { ...msg.payload, seqNo })
sendAck(ws, msg.messageId, "ok")
RETURN
IF msg.type == "resume":
session = getSession(msg.sessionId)
IF NOT session THEN sendError(ws, "SESSION_EXPIRED"); RETURN
replayGap(session, msg.lastSeqPerTopic, ws)
RETURNNode.js ile tam uygulama: Gateway (Genel), Gateway ACL + Dedup.