当任何客户端发送帖子请求时,我想向所有连接的客户端发出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'});
});
})
我也尝试将套接字保存到更高的范围,甚至是全局,但似乎也没有。
提前致谢!
答案 0 :(得分:2)
你不必调用" socket emit"在里面。("连接" ...)
尝试这样的事情:
app.post('/api/news', user.can('access private page'), function(req, res, next) {
io.sockets.emit("nuova:news", data);
});
在我的情况下,我通过" io"来自" server.js"的变量像这样的文件(或app.js):
require('./app/myRoute')(app, user, io);
然后在控制器中接收它:
module.exports = function(app, user, io) {
...
}
" IO"声明如下:
var wsServer = require('http').createServer(app);
var io = require('socket.io').listen(wsServer);
我希望这些额外的信息对你有用......