reset connection as every send message
This commit is contained in:
parent
da591bb53c
commit
80dec2daf9
|
|
@ -428,13 +428,7 @@ function sendToGateway(text, isPipeline) {
|
|||
if (isPipeline) plog(`chat.send [${reqId}] an Gateway gesendet — warte auf ACK...`);
|
||||
|
||||
// Nachricht auch an RVS senden damit die App sie sieht
|
||||
if (rvsWs && rvsWs.readyState === WebSocket.OPEN) {
|
||||
rvsWs.send(JSON.stringify({
|
||||
type: "chat",
|
||||
payload: { text, sender: "diagnostic" },
|
||||
timestamp: Date.now(),
|
||||
}));
|
||||
}
|
||||
sendToRVS(text, false);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -540,21 +534,50 @@ function connectRVS(forcePlain) {
|
|||
}
|
||||
|
||||
function sendToRVS(text, isPipeline) {
|
||||
log("info", "rvs", `sendToRVS: rvsWs=${rvsWs ? 'exists' : 'null'}, readyState=${rvsWs ? rvsWs.readyState : 'N/A'}, OPEN=${WebSocket.OPEN}`);
|
||||
if (!rvsWs || rvsWs.readyState !== WebSocket.OPEN) {
|
||||
log("error", "rvs", `Nicht verbunden (readyState: ${rvsWs ? rvsWs.readyState : 'null'})`);
|
||||
if (isPipeline) pipelineEnd(false, "RVS nicht verbunden");
|
||||
if (!RVS_HOST || !RVS_TOKEN) {
|
||||
log("error", "rvs", "Nicht konfiguriert");
|
||||
if (isPipeline) pipelineEnd(false, "RVS nicht konfiguriert");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Frische WebSocket-Verbindung fuer jede Nachricht (Zombie-Schutz)
|
||||
const proto = RVS_TLS === "true" ? "wss" : "ws";
|
||||
const url = `${proto}://${RVS_HOST}:${RVS_PORT}?token=${RVS_TOKEN}`;
|
||||
const msg = JSON.stringify({
|
||||
type: "chat",
|
||||
payload: { text, sender: "diagnostic" },
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
log("info", "rvs", `Sende ${msg.length} bytes an RVS...`);
|
||||
rvsWs.send(msg);
|
||||
log("info", "rvs", `Gesendet via RVS: "${text}"`);
|
||||
|
||||
log("info", "rvs", `Sende via frische Verbindung: ${url.split('?')[0]}`);
|
||||
|
||||
const freshWs = new WebSocket(url);
|
||||
freshWs.on("open", () => {
|
||||
freshWs.send(msg);
|
||||
log("info", "rvs", `Gesendet via RVS: "${text}"`);
|
||||
// Verbindung offen lassen fuer Antwort-Empfang, nach 5min schliessen
|
||||
setTimeout(() => { try { freshWs.close(); } catch (_) {} }, 300000);
|
||||
});
|
||||
freshWs.on("message", (raw) => {
|
||||
try {
|
||||
const resp = JSON.parse(raw.toString());
|
||||
if (resp.type === "chat" && resp.payload) {
|
||||
const sender = resp.payload.sender || "?";
|
||||
log("info", "rvs", `Chat von ${sender}: "${(resp.payload.text || "").slice(0, 100)}"`);
|
||||
if (pipelineActive && sender !== "diagnostic") {
|
||||
pipelineEnd(true, `Antwort via RVS von ${sender}: "${(resp.payload.text || "").slice(0, 120)}"`);
|
||||
}
|
||||
broadcast({ type: "rvs_chat", msg: resp });
|
||||
} else if (resp.type !== "heartbeat") {
|
||||
log("debug", "rvs", `Nachricht: ${JSON.stringify(resp).slice(0, 150)}`);
|
||||
}
|
||||
} catch {}
|
||||
});
|
||||
freshWs.on("error", (err) => {
|
||||
log("error", "rvs", `Sende-Fehler: ${err.message}`);
|
||||
if (isPipeline) pipelineEnd(false, `RVS Fehler: ${err.message}`);
|
||||
});
|
||||
|
||||
if (isPipeline) plog(`Nachricht an RVS gesendet — warte auf Antwort via RVS...`);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue