Ana içeriğe geç

Responser

Responser
Inputs: 1
Outputs: 0
Kategori: trexMes service

Olay tabanlı akışların kapatıcısıdır. trexMes panele HTTP cevabını döndürür. Her event akışının sonunda mutlaka bulunmalıdır (bazı node'lar bunu otomatik yönetir).

Özet

Akış sonlandırıcı

Business Events, System Events gibi olay node'larıyla başlayan akışlar mutlaka bir Responser ile sonlanmalıdır. Aksi takdirde panel cevap bekler, akış asılı kalır ve timeout hatası alırsınız.

Ne Zaman Kullanılır?

  • Her olay (event) tabanlı akışın sonunda
  • Custom form / control / method invocation operasyonlarından sonra cevap döndürmek için

Hangi Akışlarda Gerekli DEĞİLDİR?

  • trex Subscriber kendi cevabını yönetir — sonuna Responser koymayın.
  • Method Returns asenkron bir akış başlatır — gerekli olmayabilir.

Property Tablosu

Alan Tip Varsayılan Açıklama
name string Node-RED canvas üzerinde gösterilecek ad
statusCode string (boş) HTTP cevap kodunu zorla ayarlamak için (örn. 200, 400)
headers object {} HTTP cevap header'ları

Davranış

Responser aldığı msg'i analiz eder ve panele şu şekilde cevap döner:

// Statü kodu belirleme (öncelik sırası)
statusCode = node.statusCode || msg.statusCode || 200;

// Payload tip kontrolü
if (typeof msg.payload === "object" && !Buffer.isBuffer(msg.payload)) {
    msg.res._res.status(statusCode).jsonp(msg.payload);
} else {
    msg.res._res.status(statusCode).send(msg.payload);
}

msg.headers ve msg.cookies set edilmişse otomatik olarak HTTP cevabına eklenir:

// Akış içinde
msg.headers = { "x-custom": "value" };
msg.cookies = { sessionId: "abc123" };

Tipik Akış

flowchart LR
    A[Business Events] --> B[Custom Form]
    B --> C[Form Bind Controls]
    C --> D[Responser]

    style A fill:#ccffcc,color:#000
    style B fill:#ccffcc,color:#000
    style C fill:#ccffcc,color:#000
    style D fill:#ccffcc,color:#000

Çıkış Yok

Responser outputs: 0 olduğu için sonrasına başka node bağlayamazsınız. Akış burada sona erer.

Sık Karşılaşılan Hatalar

Panel cevap beklemede asılı kalıyor

Akışta Responser eksik. Olay node'undan başlayan akışın sonuna bir Responser eklenmelidir. Birden fazla dal tek bir Responser'a bağlanabilir.

Cevap iki kere dönüyor uyarısı

Aynı msg.res üzerinden iki kere cevap döndürülmeye çalışıldığında ortaya çıkar. Birden fazla Responser aynı dalda peş peşe gelmemelidir.

Hata: msg.res is undefined

Bu node'a msg.res taşımayan bir akıştan geliyorsanız (örn. inject ile manuel başlatılan flow) cevap dönecek bir HTTP isteği yoktur. Sadece gerçek olay akışlarında çalışır.

İpuçları

Hata cevabı dönmek istiyorum

Akışın bir noktasında hata oluştu ve panele 400 veya 500 döndürmek istiyorsanız:

// Function node içinde
msg.statusCode = 400;
msg.payload = { error: "Invalid order number" };
return msg;

Sonra Responser bunu otomatik kullanır.

JSON yerine düz metin

msg.payload bir string ise düz metin gönderilir. object ise JSON olarak gönderilir.

İlgili Nodlar