Я пытаюсь получать обновления smsStatus на клиенте, когда POST-данные поступают на мой сервер. На данный момент у меня есть кнопка для подделки фиктивных данных POST на мой сервер. Это работает, как ожидалось, но, похоже, не обновляет мой клиент. Я подозреваю, что моя проблема заключается в том, как мой GET возвращает данные.
На стороне клиента : index. html
const sse = new EventSource("smsstatus");
sse.onmessage = e => {
console.log("client sse:", e.data);
};
// faking a webhook POST, I have a button calling queued()
const queued = () => {
fetch("/smsstatus", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
SmsSid: "SM99a0439b741d4034bdbde2b70801a191",
SmsStatus: "queued",
MessageStatus: "queued",
To: "+15558675310",
MessageSid: "SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
AccountSid: "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
From: "+15017122661",
ApiVersion: "2010-04-01"
})
});
};
На стороне сервера : smsstatus. js
Обратите внимание, что мой экспресс / узел не является стандартным, потому что я использую Sapper , где "Маршруты сервера - это модули, записанные в. js экспортируемых файлах функции, соответствующие методам HTTP. Каждая функция получает объекты запросов и ответов HTTP в качестве аргументов, а также следующую функцию. " Хотя это немного странно, но я не думаю, что это связано с моей проблемой (без ошибок соединения, 404 с, и т. Д. c). bopyparser импортируется и работает.
let data; // global to pass data between POST/GET
// for smsCallback webhook
export async function post(req, res, next) {
console.log("POST...");
const { SmsSid, SmsStatus } = req.body;
data = req.body;
console.log(SmsSid, SmsStatus);
get(req,res)
}
// for sse connection
export async function get(req, res) {
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Connection': 'keep-alive',
'Cache-Control': 'no-cache'
});
console.log("get",data);
res.write(`\n{data: ${data}\n\n}`);
}
клиентская консоль ничего не показывает, а серверная консоль показывает
POST...
SM99a0439b741d4034bdbde2b70801a191 queued
get {
SmsSid: 'SM99a0439b741d4034bdbde2b70801a191',
SmsStatus: 'queued',
MessageStatus: 'queued',
To: '+15558675310',
MessageSid: 'SMXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
AccountSid: 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
From: '+15017122661',
ApiVersion: '2010-04-01'
}