首页 > 解决方案 > 在sails 中响应socket.io post 函数的正确方法是什么?

问题描述

客户端:

io.socket.get('/measurements', {
    id: id,
    _csrf: csrf,
}, function (resData, jwRes) {
    console.log(resData);
});

服务器端:

fn: async function () {

    var measurements = [];

    if (!this.req.isSocket) {
        //error here
    } else {
        // get measurements, removed this section for readibility
        return this.res.status(200).json({
            measurements: measurements
        });
    }
}

这有效,它返回测量值,但它也返回以下错误:

Error: Cannot write to response more than once

我认为这是因为 Sails 在我的响应之后发送了 200 响应,但我无法弄清楚如何覆盖 Sails 的响应或将测量结果附加到它。

标签: socket.iosails.js

解决方案


原来风帆比我想象的要聪明。通过反复试验,我发现我可以替换:

return this.res.status(200).json({
        measurements: measurements
    });

和:

return ({measurements});

其余的工作由 Sails 完成。


推荐阅读