[Solved] Spark Publish, NodeJS and EventSource

Got it figgered.

Doesn’t work:

var EventSource = require('eventsource');
var deviceID = "xxxxxxxxxxxxxxxxxxxx";
var accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxx";

var url = "https://api.spark.io/v1/devices/"+deviceID+"/events/?access_token="+accessToken;

console.log("Listening on "+url+" ...");

var es = new EventSource(url);

es.onmessage = function(e){
  console.log( e.data);
};

es.onerror = function(){
  console.log('ES Error');
};

Does work:

var EventSource = require('eventsource');
var esInitDict = {rejectUnauthorized: false};

var deviceID = "xxxxxxxxxxxxxxxxxx";
var accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";

var url = "https://api.spark.io/v1/devices/"+deviceID+"/events/?access_token="+accessToken;

console.log("Listening on "+url+" ...");

var es = new EventSource(url);

es.addEventListener('Environment', function(e){
	console.log( e.data);
}, false);

The examples I was referencing were using the es.onmessage method, which don’t get thrown for some reason. Using es.addEventListener totally works. Bam!

3 Likes