Read the statement by Michael Teeuw here.
Unable to sendSocketNotification from node_helper to Module
- 
Hi community, I’m pulling my hair out trying to get this one working.
I’ve got my MMM-IFTTT module nearly completed, except for a small hickup.
In the node_helper.js I’m sending a socket notification that is not getting through to the UI. It was working at some stage before nesting it in another function, so I assume it’s a scope issue. I’ve tried debugging everything everywhere, even using
this.ioto send it the hard way.I’m using the new ES6 anonymous function syntax, ie:
this.expressApp.post('/IFTTT', (req, res) => {which should keep the
thisreference from outside of the function and all my console logging suggests it does, however I think that theioreference is not the same one somehow, and despite thethis.io.of(this.name).emit(notification, payload);succeeding in the node helper library, the notification simply doesn’t show in the UI dev console.This is also apparent when trying the
var self = this;method, using theselfobject even immediately doesn’t send through the socket.Any help on this scope stuff would be appreciated! Thanks in advance.
Raspbian Jessie Node version: v6.6.0 - 
@jc21 did you try the common way?
this.sendSocketNotification('MSG', 'Hello World');and in the module itself
socketNotificationReceived: function(notification, payload){ if(notification === 'MSG'){ Log.info(payload); } } - 
I dumbed the module right down:
node_helper.jsconst NodeHelper = require('node_helper'); module.exports = NodeHelper.create({ start: function() { console.log('[IFTTT] Starting node_helper'); var self = this; setTimeout(function () { self.sendSocketNotification('MSG', {message: 'test'}); }, 10000); } });MMM-IFTTT.js//... socketNotificationReceived: function(notification, payload) { if (notification === 'MSG'){ Log.info(payload); } }, //...Still not getting the log in dev console :(
 - 
@jc21 If I’m right you must start the connection from the module, but can’t test it right now
MMM-IFTTT.js
start: function() { this.sendSocketNotification('START', {message: 'start connection'}); }, socketNotificationReceived: function(notification, payload) { if (notification === 'MSG'){ Log.info(payload); } },node_helper.js
const NodeHelper = require('node_helper'); module.exports = NodeHelper.create({ start: function() { console.log('[IFTTT] Starting node_helper'); }, socketNotificationReceived: function(notification, payload) { if (notification === 'START'){ setTimeout(() => { this.sendSocketNotification('MSG', {message: 'test'}); }, 10000); } }, }); - 
Wow that is not obvious or documented.
However, that worked :) Thanks heaps!
 
