我还在学习node.js
基础知识。我的流程是这样的,
browser<-->node<-->backend server
进行计算。
节点和后端使用套接字进行通信。
在浏览器中有开始/停止按钮,要求后端启动/停止 计算
当节点要求后端启动/停止时,它必须查询后端是否为 先活着。
我的代码是这样的 -
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);
如果使用相同的浏览器,如果我发疯了点击开始/停止......对于&#34; stopCmd&#34;,如何确定何时查询&#34; status&#34;,响应被捕获 通过它的功能,而不是&#34; startCmd&#34;&#39; s? 这条线 socketToBackendServer.on(&#34; data&#34;,function()
再次感谢你!
答案 0 :(得分:0)
您可以使用多个连接到后端服务器,因此一个功能可以自由使用一个频道,响应不会混合。
或者您可以使用多重功能,您可以从两个功能调用: