javascript - 从 Node 中的 rest api 调用 socket.io

标签 javascript node.js rest socket.io

我正在尝试从我的 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/

相关文章:

javascript - jquery javascript 验证

javascript - 数组数组困惑

javascript - 将语音字符串映射到可能的备用字符串以与 dynamoDB 匹配

node.js - 为什么 Node.js 有异步和同步版本的 fs 方法?

Codeigniter和RestServer。如何上传图片?

javascript - 如何隐藏表格中的每隔一行?

javascript - POST 请求中缺少字段是否会引发错误?

javascript - 错误 : connect ETIMEDOUT

spring - 使用Spring/Jetty(或Tomcat)/Maven为REST测试配置集成测试

c++ - Windows 上 Microsoft cpprestsdk 中带有 http_listener 的 TLS