带有快速后端的Socket.io

时间:2017-01-03 16:31:28

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

我想在 express 后端实现 socket.io ,以告知用户请求期间的任务状态(状态就像启动,处理一样) ,...)

因此,用户单击按钮,套接字连接打开并等待事件,在长时间运行请求后端向客户端发送数据,最后响应到来并请求完成,结果显示给用户。

在我的 index.js 文件中,我引导应用程序

const express = require('express'),
app = express(),
router = require('./router'),
server = require('http').Server(app);
var io = require('socket.io')(server);
/* other required modules*/

server.listen(config.port,'127.0.0.1');
router(app, io);

在我的 router.js

const taskController = require('./controllers/task');
/* other required modules*/

module.exports = function(app, io) {
  const apiRoutes = express.Router();
  apiRoutes.post('/task/do', taskController.doTask(io));
}

在我的 task.js

exports.doAnalysis = function(socket){
 return function(req, res){
   socket.emit('task-start', 'Your task is started');
   ...
 }
}

当我这样做时,它会发出所有连接的客户端。

我想要做的是,从我的控制器的功能发出只调用端点的特定客户端,仅发送者。

另外,我无法在我的任务控制器中执行以下代码段:

exports.doTask = function(socket){
 return function(req, res){
   socket.on('connection', function(s){
     s.emit('task-start', 'Your task is started');
     ...
   })
 }
}

显然,传递io对象不适合这种情况。

我知道我应该获取所有套接字ID并使用特定套接字ID发出但是, 这样做的正确方法是什么?

0 个答案:

没有答案