【发布时间】:2018-06-28 14:36:11
【问题描述】:
我正在使用 socket.io 在客户端和 NodeJS HTTP 服务器之间发送和接收消息。到目前为止,它运行良好,因为所有代码都在 app.js 主文件中,如下所示:
let express = require('express')
let app = express();
let http = require('http');
let server = http.Server(app);
let socketIO = require('socket.io');
let io = socketIO(server);
io.on('connection', (socket) => {
console.log('New user connected');
socket.on('new-message', (message) => {
console.log(message);
io.emit('new-message', message);
});
});
但现在我有这个案例:
- 当用户从客户端应用程序请求
/compile和/save路由时,服务器需要执行一些操作(每个操作最多需要 2 秒),我想通知他通过发送消息socket.io 显示每个操作的结果。这是一个示例路由处理程序:
routes/compile.js
var express = require('express');
var router = express.Router();
router.get('/compile', (req, res, next) => {
// DO THE OPERATIONS
// For each operation, send a socket.io message to the client with the result
});
每个客户端的socket是在主文件中获取的,当它们连接到服务器时(io.on('connection', (socket) => {),那么我如何在路由中使用它呢?
希望我解释清楚,nodeJS/socket.io 组合让我大吃一惊……谢谢!
【问题讨论】: