相关疑难解决方法(0)

云函数响应流

我有一个脚本可以按需构建 zip 文件。使用 Cloud Functions 本地模拟器在本地运行得很好。部署后,它不会传输响应。构建整个 zip 响应,然后发送。我知道发生这种情况是因为正在设置内容长度响应标头,而这在本地没有发生。

如何让 Cloud Functions 传输响应?

exports.zip = (req, res) => {
    const zipRequest = {
        media: [{
            'url': 'https://storage.googleapis.com/...',
            'file': 'file1.jpg'
        }, {
            'url': 'https://storage.googleapis.com/...',
            'file': 'file2.jpg'
        }, {
            'url': 'https://storage.googleapis.com/...',
            'file': 'file3.jpg'
        }],
        filename: 'photos.zip'
    };

    res.attachment(zipRequest.filename);
    res.setHeader('Content-Type', 'application/zip');

    let zip = Archiver('zip');
    zip.on('end', () => {
      res.end();
    });

    zip.pipe(res);
    zipRequest.media.forEach((file) => {
        zip.append(request.get(file.url), { name: file.name });
    });

    zip.finalize();
};
Run Code Online (Sandbox Code Playgroud)

node.js google-cloud-functions node-archiver

9
推荐指数
1
解决办法
3879
查看次数

Cloud Run 是否支持服务器发送事件 (SSE)?

我们无法让 SSE 从 Google Cloud Run 上的容器发送。我试过用一个简单的 SSE 示例(https://github.com/kljensen/node-sse-example)来托管一个容器,看看它是否在我们的库中——不。

我从服务器看到客户端连接(就像最初的 GET 工作一样),但没有从服务器发送事件。该EventSource客户端从不改变CONNECTINGCONNECTED

从 Cloud Run 文档来看,是否支持这有点含糊不清(强调我的):

Cloud Run(全代管式)目前不支持 HTTP 流式传输。因此,不支持使用 WebSockets 和 gRPC(流式 RPC)等协议的入站请求。

作为一个例外,Cloud Run(全托管式)服务支持用于入站请求的一元 gRPC。

对于出站请求,Cloud Run(完全托管)支持 WebSockets 和 gRPC。

SSE 不会算作出站请求,还是我误解了?

google-cloud-run

4
推荐指数
1
解决办法
1009
查看次数