Node.js 收到post请求时发送套接字消息

Node.js 收到post请求时发送套接字消息,node.js,socket.io,Node.js,Socket.io,当任何客户端发送post请求时,我希望向所有连接的客户端发出socket.io消息。如何保持套接字打开,以便我的http请求方法可以访问连接的套接字 我可以让下面的工作,但如果客户端没有连接,post方法就不能工作 io.on('connection', function(socket){ console.log('socket connected'); app.post('/api/guests', function(req, res){ socket.emit('n

当任何客户端发送post请求时,我希望向所有连接的客户端发出socket.io消息。如何保持套接字打开,以便我的http请求方法可以访问连接的套接字

我可以让下面的工作,但如果客户端没有连接,post方法就不能工作

io.on('connection', function(socket){
   console.log('socket connected');
   app.post('/api/guests', function(req, res){
       socket.emit('newguest', {hello: 'world'});
   });
})
我还尝试将套接字保存到更高的范围甚至全局范围,但这似乎也不起作用


提前谢谢

您不必调用on中的“套接字发射”。(“连接”…)

试着这样做:

app.post('/api/news', user.can('access private page'), function(req, res, next) {
    io.sockets.emit("nuova:news", data);
});
require('./app/myRoute')(app, user, io);
module.exports = function(app, user, io) {
   ...
}
var wsServer = require('http').createServer(app);
var io = require('socket.io').listen(wsServer);
在我的例子中,我从“server.js”文件(或app.js)传递“io”变量,如下所示:

app.post('/api/news', user.can('access private page'), function(req, res, next) {
    io.sockets.emit("nuova:news", data);
});
require('./app/myRoute')(app, user, io);
module.exports = function(app, user, io) {
   ...
}
var wsServer = require('http').createServer(app);
var io = require('socket.io').listen(wsServer);
并在控制器中接收,如下所示:

app.post('/api/news', user.can('access private page'), function(req, res, next) {
    io.sockets.emit("nuova:news", data);
});
require('./app/myRoute')(app, user, io);
module.exports = function(app, user, io) {
   ...
}
var wsServer = require('http').createServer(app);
var io = require('socket.io').listen(wsServer);
“io”的声明如下:

app.post('/api/news', user.can('access private page'), function(req, res, next) {
    io.sockets.emit("nuova:news", data);
});
require('./app/myRoute')(app, user, io);
module.exports = function(app, user, io) {
   ...
}
var wsServer = require('http').createServer(app);
var io = require('socket.io').listen(wsServer);
我希望这些额外的信息能对你有用