多次发送回复?

时间:2016-02-29 12:05:21

标签: javascript node.js http express socket.io

我有点问题。

我在服务器上有一个节点应用程序,它将网站作为基于客户端的应用程序的控制面板。

示例:

  1. 您点击网站上的链接
  2. http请求触发服务器通过套接字向客户端发送命令
  3. 客户端执行此命令
  4. 客户端将命令的输出发送回服务器(套接字)
  5. 按时工作正常。第二次服务器崩溃,因为标头已经发送。

    //Comand comes in
    app.get('/create/:id/:package', function (req, res) {
        if (io.sockets.connected[req.params.id]) {
            //Command is sent to client
            io.sockets.connected[req.params.id].emit('control', {type: 'create', packageName: req.params.package});
            //Output is coming back
            socket.on('createOutput', function (data) {
                //Response sent back to http request (works once)
                res.send(data);
            });
        }
    });
    

    有没有办法解决这种问题?

1 个答案:

答案 0 :(得分:1)

您只能使用socket.once发送一次数据:

socket.once('createOutput', function (data) {
        //Response sent back to http request (works once)
        res.send(data);
    })