路由,直到它从另一个nodejs进程接收到套接字io消息,然后才将响应返回给客户端?"/>
如何在服务器中进行快速路由,直到它从另一个nodejs进程接收到套接字io消息,然后才将响应返回给客户端?
我如何在服务器(也是套接字io服务器)中进行快速路由,直到它从另一个nodejs进程(套接字io客户端)收到套接字io消息,然后结束?
这样一来,在完成所有逻辑之后,我就可以发送来自客户端的信息,作为来自快速路由的响应对象。
在我当前的实现中,无法在POST Express路由内创建事件处理程序来接收来自其他nodejs进程的链接。
app.post('/api/upload/:userId', upload.any(),(request, response) => {
fs.writeFile('/tmp/example.txt' , err => {
/* extraneous logic */
//send socketio to start the logic in the other nodejs process
io.sockets.emit('start', obj)
///...... Wait
//catch 'done' event from other nodejs process
//here, OBJ sent with a link
return response.status(200).send(JSON.stringify(objWithLink))
})
})
其他节点处理
socket.on('connect' , callback{
socket.on('start') ... do more logic callbacks{
/*extraneous logic */
socket.emit('done', objWithLink)
})
回答如下:您应使用ack
。 ack
是emit中的最后一个参数,它是回调-是的,您可以通过套接字发送函数。它应该看起来像这样:
app.post('/api/upload/:userId', upload.any(),(request, response) => {
fs.writeFile('/tmp/example.txt' , err => {
/* extraneous logic */
//send socketio to start the logic in the other nodejs process
io.sockets.emit('start', obj, (objWithLink) => {
// this is executing when the other process call callback()
return response.status(200).send(JSON.stringify(objWithLink))
});
});
});
并且在其他过程中:
socket.on('connect' , _ => {
socket.on('start', (object, callback) => {
// do some logic here, after all call callback
callback(objectWithLink);
});
});
更多推荐
如何在服务器中进行快速路由,直到它从另一个nodejs进程接收到套接字io消息,然后才将响应返回给客户端?
发布评论