我正在尝试从我的 restful api 发出一个 socket.io 事件。
我当前的设置看起来像这样:
应用程序.js 设置一个快速应用程序并创建所有必要的路线,例如:
var app = express();
...
var routesApi = require('./app_api/routes/index');
app.use('/api', routesApi);
module.exports = app;
服务器.js 创建一个服务器并连接 express app 和 socket.io
var http = require('http');
var server = http.createServer(app);
require('../app_server/controllers/socket.js').socketServer(server);
一切正常,我可以从客户端成功触发套接字事件,在 socket.js 中处理它并发出结果。
但是,我想做的是从我的 restful api 调用 socket.js 方法,但我不知道如何连接它。
由于套接字服务器是在 server.js 中初始化的,而我的 api 路由是在 app.js 中连接的,所以我不确定让它们相互通信的正确方法是什么。
谢谢
最佳答案
你应该在 express 部分(或者你有 app
的地方)初始化 Socket.io,这样你就可以将它保存在 express 请求中,并在你想要的每个路由中使用它。
因此,在您的 app.js
中创建套接字,然后将其保存在应用程序中:
var socketIo = require('../app_server/controllers/socket.js').socketServer(server); // Make sure this returns the socketio
app.set('socketIo', socketIo);
现在在每条路线上你都可以这样做:
app.route('/test').get(function (req, res) {
var socket = req.app.get('socketIo');
socket.emit('hello', 'world');
res.end();
}
关于javascript - 从 Node 中的 rest api 调用 socket.io,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38092427/