[英]ExpressJS + Socket.IO Routing
Repeated Question, But i found no perfect answer as a solutions. 重复的问题,但我发现没有完美的答案作为解决方案。 Please help me to solve this issue. 请帮我解决这个问题。
My App.js 我的App.js
var routes = require('./routes/index');
var users = require('./routes/users');
var media = require('./routes/media');
var widget = require('./routes/widget');
var display = require('./routes/displays');
var device = require('./routes/deviceinfo');
app.use('/', routes);
app.use('/display', display);
var server = http.createServer(app);
var io = require('socket.io')(server);
io.set('transports', ['polling', 'websocket']);
Display Routes: "routes/display.js" 显示路线:“routes / display.js”
I have code to insert a display, As soon a display is created an event should emit to the list of devices. 我有代码来插入显示,创建显示后,事件应该发送到设备列表。
Emit should need to write in save success callback Method. Emit应该需要写成保存成功的回调方法。
var express = require('express');
var router = express.Router();
router.post('/save', action_save_displays);
function action_save_displays(req, res){
display.save(req,body , function(err , display){
if(!err){
res.json(display);
//io.sockets.emit("displaycreated", display);
}
})
}
module.exports = routes;
How to pass io.sockets.emit in routes/display.js file. 如何在routes / display.js文件中传递io.sockets.emit。 really appreciate your guidance. 真的很感谢你的指导。 how to send socket object to routes to enable emit event. 如何将socket对象发送到路由以启用emit事件。
You can swap the requires around a bit, and just pass socket.io to the display.js file 你可以稍微交换一下需求,然后将socket.io传递给display.js文件
var routes = require('./routes/index');
var users = require('./routes/users');
var media = require('./routes/media');
var widget = require('./routes/widget');
var server = http.createServer(app);
var io = require('socket.io')(server);
var display = require('./routes/displays')(io); // here
var device = require('./routes/deviceinfo');
app.use('/', routes);
app.use('/display', display);
io.set('transports', ['polling', 'websocket']);
and get it in the display.js
file 并在display.js
文件中获取它
var express = require('express');
var router = express.Router();
module.exports = function(io) {
router.post('/save', function(req, res) {
display.save(req.body , function(err, display){
if(!err){
res.json(display);
io.sockets.emit("displaycreated", display);
}
});
});
return router;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.