I am using loopback API. server.js (server -> server.js) is as below:
var loopback = require('loopback');
var boot = require('loopback-boot');
var app = module.exports = loopback();
app.start = function () {
return app.listen(function () {
app.emit('started');
console.log('Web server listening at: %s', app.get('url'));
});
};
boot(app, __dirname, function (err) {
if (err) throw err;
if (require.main === module) {
//app.start();
app.io = require('socket.io')(app.start());
app.io.on('connection', function (socket) {
console.log('a user connected');
socket.on('disconnect', function () {
console.log('user disconnected');
});
})
}
});
I have created one model file mock.js (common -> models -> mock.js) which contains one method which send pie chart data periodically.
module.exports = function (Mock) {
Mock.getPieChartData = function (cb) {
var appIO = Mock.app.io
console.log('Inside Mock->getPieChartData')
var interval = setInterval(function () {
appIO.emit("pieData", getPieChartData());
}, 3000)
cb(null, getPieChartData())
}
function getPieChartData() {
.......
}
}
Problem is, appIO.emit sends data to all connected clients. I just want to send data to only connected client. not all. If I do socket.emit in server.js inside connection function then it works fine. But I want to emit data from method inside model (mock.js -> Mock.getPieChartData). I am not getting current socket instance inside this method.