我正在尝试使用事件发射器触发我需要的特定功能。这是nodejs代码。 事件源在 localhost 上本地运行,但是一旦部署,我将无法检测到事件触发器。但是,firebase功能记录器上的日志显示了正在执行的功能。但是,在测试时,该功能不提供对该事件的任何反馈
Count() then Sum([Value]) Over (AllPrevious([Axis.Rows])) / Sum([Value]) OVER (All([Axis.Rows])) as [Cumulative Sum]
当我在本地测试此代码以进行事件发射时,使用以下Angular代码,将在控制台上检测并记录该事件。但是,将功能部署到 firebase功能后,我在浏览器的“网络”标签上收到了一个待处理请求,该日志没有任何日志,并且似乎没有完成全部,我的角度代码不可避免地什么也没检测到
const EventEmitter = require('events');
const Stream = new EventEmitter();
// 'Access-Control-Allow-Origin': '*',
// 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
exports.eventEmitter = (req, res) => {
console.log(req.body);
res.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
Connection: 'keep-alive'
})
Stream.on('push', function(event, data) {
console.log('send0');
res.write('event: ' + String(event) + '\n' + 'data:' + JSON.stringify(data) + '\n\n');
});
setInterval(() => {
console.log('send1');
Stream.emit('push', 'message', { msg: 'it works! hurraaay' });
}, 5000);
}
答案 0 :(得分:1)
云功能HTTP端点不支持将数据流传输到Websocket之类的客户端。它只能预先接收整个有效负载,然后将整个有效负载发送回客户端。没有分块的响应。有效负载限制为10MB。函数调用的默认超时为60s,最多只能增加到9m。如果您需要流式传输,那么Cloud Functions不是适合您的用例的产品。