node.js:如何在两个不同的路由中同步套接字接收

node.js:如何在两个不同的路由中同步套接字接收,node.js,Node.js,我还在学习node.js基础知识。我的流量是这样的,, 浏览器节点备份服务器正在进行计算 节点和后端使用套接字进行通信 在浏览器中有启动/停止按钮,用于请求后端启动/停止 计算 当节点要求后端启动/停止时,它必须进行查询以查看后端是否已启动 先活着 我的代码是这样的- app.get('/stopCmd', function(req, res) { socketToBackendServer.write("status", function() { console.log

我还在学习
node.js
基础知识。我的流量是这样的,,
浏览器节点备份服务器
正在进行计算

节点和后端使用套接字进行通信

在浏览器中有启动/停止按钮,用于请求后端启动/停止 计算

当节点要求后端启动/停止时,它必须进行查询以查看后端是否已启动 先活着

我的代码是这样的-

app.get('/stopCmd', function(req, res)
{
    socketToBackendServer.write("status", function() {
        console.log("Sending:", 'Node asking for STATUS');
    });

    socketToBackendServer.on("data", function() {
        if(status is ok) // pseudo code
        {
            socketToBackendServer.write("stop", function() {
                console.log("Sending:", 'Node sending STOP');
            });
        } else {
            console.log("backend server is NOT ready");
        }
    });
});
app.get('/startCmd', function(req, res)
{
    // do similar things as stopCmd
});

/////////////////////////////////////////////////
var socketToBackendServer = net.connect(2899);
function openSocket() {
    socketToBackendServer.setKeepAlive(true);
    socketToBackendServer.on('connect', onConnect.bind({}, socketToBackendServer));
    socketToBackendServer.on('error', onError.bind({}, socketToBackendServer));
}


function onConnect(socket) {    
    var myData;

    console.log('Socket is open!');

    socket.on('data', function(data) {
        console.log('Received:', data);
        io.emit('time', { time: data.toJSON() });
    });
}

function onError(socket) {
    console.log('Socket error!');
    // Kill socket
    clearInterval(interval);
    socket.destroy();
    socket.unref();
    // Re-open socket
    setTimeout(openSocket, 1e3);
}

openSocket();

server.listen(7778);
如果使用相同的浏览器,如果我疯了,单击开始/停止。。。为了" stopCmd”,如何确保在查询“状态”时捕获响应 就其功能而言,不是“startCmd”? 是这条线 on(“数据”,函数())


再次感谢您!

您可以使用到后端服务器的多个连接,因此一个功能可以自由使用一个通道,响应不会混合

或者,您可以使用多路复用器函数,从两个函数调用该函数:

  • 如果您可以识别您的请求,比如发送带有状态的id和id,例如socketToBackendServer.write(“状态1”),然后您从后端服务器(如果是您的)发送带有状态响应的id,那么它就可以工作。通过这种方式,您可以同时发送多个请求,并且当响应到来时,您可以识别它,并使用ID调用存储在数组中的回调函数
  • 您只发送一个请求,并在发送另一个请求之前等待响应。您必须使用一个等待队列(存储请求的地方)和回调函数

  • 你没能把代码放进去。终于想出了如何发布codesaw,同时考虑多路复用器,试着看看是否有更好的方法,:)