Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Express 4中间件触发socket.io实时通知_Javascript_Node.js_Express_Socket.io - Fatal编程技术网

Javascript 从Express 4中间件触发socket.io实时通知

Javascript 从Express 4中间件触发socket.io实时通知,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我正在使用socket.io构建一个实时通知系统。这是我目前的服务器端代码: bin/www: var app = require('../app'); var server = http.createServer(app); var io = app.io io.attach(server); server.listen(port, function(err) { if (err) console.log(err); console.log('Listening on port '

我正在使用
socket.io
构建一个实时通知系统。这是我目前的服务器端代码:

bin/www:

var app = require('../app');
var server = http.createServer(app);

var io = app.io
io.attach(server);

server.listen(port, function(err) {
  if (err) console.log(err);
  console.log('Listening on port ' + port + '...');
});
var socket_io = require('socket.io');
var express = require('express');

var app = express();
var io = socket_io();
app.io = io;
require('./config/socket')(app.io);
var User = require('../controllers/user');

module.exports = function (io) {
    io.on('connection', function (socket) {
        console.log('Socket.io connected');
        socket.emit('connection', "Connection created.");
        socket.on('send notification', function(data) {
            User.createNotification(socket.request.user, data);
        });
    });
};
var express = require('express');
var User = require('../controllers/user');
var router = express.Router();

router.post('/order', User.order);
module.exports = router;
var User = require('../models/user').model;
var io = require('socket.io');

module.exports = {
    order: function(req, res) {
        /* some create order code */
        io.emit('send notification', 'Your order was successful!');
        res.sendStatus(200);
   }
}
app.js:

var app = require('../app');
var server = http.createServer(app);

var io = app.io
io.attach(server);

server.listen(port, function(err) {
  if (err) console.log(err);
  console.log('Listening on port ' + port + '...');
});
var socket_io = require('socket.io');
var express = require('express');

var app = express();
var io = socket_io();
app.io = io;
require('./config/socket')(app.io);
var User = require('../controllers/user');

module.exports = function (io) {
    io.on('connection', function (socket) {
        console.log('Socket.io connected');
        socket.emit('connection', "Connection created.");
        socket.on('send notification', function(data) {
            User.createNotification(socket.request.user, data);
        });
    });
};
var express = require('express');
var User = require('../controllers/user');
var router = express.Router();

router.post('/order', User.order);
module.exports = router;
var User = require('../models/user').model;
var io = require('socket.io');

module.exports = {
    order: function(req, res) {
        /* some create order code */
        io.emit('send notification', 'Your order was successful!');
        res.sendStatus(200);
   }
}
config/socket.js:

var app = require('../app');
var server = http.createServer(app);

var io = app.io
io.attach(server);

server.listen(port, function(err) {
  if (err) console.log(err);
  console.log('Listening on port ' + port + '...');
});
var socket_io = require('socket.io');
var express = require('express');

var app = express();
var io = socket_io();
app.io = io;
require('./config/socket')(app.io);
var User = require('../controllers/user');

module.exports = function (io) {
    io.on('connection', function (socket) {
        console.log('Socket.io connected');
        socket.emit('connection', "Connection created.");
        socket.on('send notification', function(data) {
            User.createNotification(socket.request.user, data);
        });
    });
};
var express = require('express');
var User = require('../controllers/user');
var router = express.Router();

router.post('/order', User.order);
module.exports = router;
var User = require('../models/user').model;
var io = require('socket.io');

module.exports = {
    order: function(req, res) {
        /* some create order code */
        io.emit('send notification', 'Your order was successful!');
        res.sendStatus(200);
   }
}
routes/index.js:

var app = require('../app');
var server = http.createServer(app);

var io = app.io
io.attach(server);

server.listen(port, function(err) {
  if (err) console.log(err);
  console.log('Listening on port ' + port + '...');
});
var socket_io = require('socket.io');
var express = require('express');

var app = express();
var io = socket_io();
app.io = io;
require('./config/socket')(app.io);
var User = require('../controllers/user');

module.exports = function (io) {
    io.on('connection', function (socket) {
        console.log('Socket.io connected');
        socket.emit('connection', "Connection created.");
        socket.on('send notification', function(data) {
            User.createNotification(socket.request.user, data);
        });
    });
};
var express = require('express');
var User = require('../controllers/user');
var router = express.Router();

router.post('/order', User.order);
module.exports = router;
var User = require('../models/user').model;
var io = require('socket.io');

module.exports = {
    order: function(req, res) {
        /* some create order code */
        io.emit('send notification', 'Your order was successful!');
        res.sendStatus(200);
   }
}
控制器/user.js:

var app = require('../app');
var server = http.createServer(app);

var io = app.io
io.attach(server);

server.listen(port, function(err) {
  if (err) console.log(err);
  console.log('Listening on port ' + port + '...');
});
var socket_io = require('socket.io');
var express = require('express');

var app = express();
var io = socket_io();
app.io = io;
require('./config/socket')(app.io);
var User = require('../controllers/user');

module.exports = function (io) {
    io.on('connection', function (socket) {
        console.log('Socket.io connected');
        socket.emit('connection', "Connection created.");
        socket.on('send notification', function(data) {
            User.createNotification(socket.request.user, data);
        });
    });
};
var express = require('express');
var User = require('../controllers/user');
var router = express.Router();

router.post('/order', User.order);
module.exports = router;
var User = require('../models/user').model;
var io = require('socket.io');

module.exports = {
    order: function(req, res) {
        /* some create order code */
        io.emit('send notification', 'Your order was successful!');
        res.sendStatus(200);
   }
}
我一直收到错误
TypeError:io.emit不是一个函数,每当我试图调用路由
POST/send
时,即使我在
app.js
bin/www
文件中启动
controllers/user.js
并要求它。我在本部分中看到的所有在线发出通知的示例:

io.on('connection', function (socket) {
        socket.emit(event, msg);
    });

但我希望从中间件触发通知,以便在应用程序后端发生某些事件时向用户发送自定义通知。

请尝试以下操作:

io.on('connection', function(socket){
    socket.on('xxx', function(obj){
        io.emit('xxx', {xxx: xxx})
    })
})
这将抑制您的
类型错误: