zsa*_*ayn 7 javascript rest node.js socket.io
我正在尝试从我的宁静 api 发出 socket.io 事件。
我当前的设置如下所示:
app.js 设置一个 express 应用程序并创建所有必要的路由,例如:
var app = express();
...
var routesApi = require('./app_api/routes/index');
app.use('/api', routesApi);
module.exports = app;
Run Code Online (Sandbox Code Playgroud)
server.js 创建一个服务器并连接 express 应用程序和 socket.io
var http = require('http');
var server = http.createServer(app);
require('../app_server/controllers/socket.js').socketServer(server);
Run Code Online (Sandbox Code Playgroud)
一切正常,我可以成功地从客户端触发一个套接字事件,在 socket.js 中处理它并发出结果。
但是,我想要做的是从我的宁静 api 调用 socket.js 方法,我不知道如何连接它。
由于套接字服务器是在 server.js 中初始化的,而我的 api 路由是在 app.js 中连接的,我不确定让它们相互通信的正确方法是什么。
谢谢
mic*_*lem 12
您应该在 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);
Run Code Online (Sandbox Code Playgroud)
现在,在每条路线中,您都可以这样做:
app.route('/test').get(function (req, res) {
var socket = req.app.get('socketIo');
socket.emit('hello', 'world');
res.end();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5127 次 |
| 最近记录: |