mirror of
https://gitlab.silvrtree.co.uk/martind2000/SODashServer.git
synced 2025-02-10 20:39:15 +00:00
Push notifications
This commit is contained in:
parent
244f0a2b40
commit
cef2cdf458
12
app.js
12
app.js
@ -16,6 +16,7 @@ var mqttConnect = require('./lib/mqtt/mqttConnect');
|
||||
var log4js = require('log4js');
|
||||
var logger = log4js.getLogger();
|
||||
|
||||
|
||||
var WebSocketServer = require('websocket').server;
|
||||
|
||||
var EventEmitter = require('events');
|
||||
@ -29,6 +30,8 @@ var heating_v1 = require('./routes/heating_v1');
|
||||
var projector_v1 = require('./routes/projector_v1');
|
||||
var isProduction = false;
|
||||
|
||||
var iosTokens = [];
|
||||
|
||||
|
||||
mqttConnect.setEmitter(busEmitter);
|
||||
mqttConnect.doConnection();
|
||||
@ -166,7 +169,7 @@ wsServer.on('request', function(request) {
|
||||
console.log((new Date()) + ' Connection accepted.');
|
||||
|
||||
var sendSocketHandler = (obj) => {
|
||||
//logger.info('sendSocket: ' , JSON.stringify(obj));
|
||||
//Logger.info('sendSocket: ' , JSON.stringify(obj));
|
||||
try {
|
||||
connection.sendUTF(JSON.stringify(obj));
|
||||
}
|
||||
@ -211,6 +214,13 @@ app.post('/api/v1/heating/on', heating_v1.turnon);
|
||||
app.post('/api/v1/projector/off', projector_v1.turnoff);
|
||||
app.post('/api/v1/projector/on', projector_v1.turnon);
|
||||
|
||||
app.post('/api/v1/register/ios', function(req, res) {
|
||||
|
||||
console.log(req.body);
|
||||
});
|
||||
|
||||
|
||||
|
||||
app.listen(3000, function() {
|
||||
console.log('Express listening on 3000');
|
||||
});
|
||||
|
@ -9,7 +9,7 @@ var SOController = (function() {
|
||||
|
||||
var path;
|
||||
var wsUrl;
|
||||
var local = true;
|
||||
var local = false;
|
||||
var bus = {};
|
||||
var prevDate;
|
||||
var prevTime;
|
||||
@ -17,6 +17,9 @@ var SOController = (function() {
|
||||
var weatherStore = null;
|
||||
var lastWeatherRequest = 0;
|
||||
var soWebSocket;
|
||||
var iosConfig = {
|
||||
"badge": true, "sound": true, "alert": true,
|
||||
};
|
||||
|
||||
var lightsList = {
|
||||
off: ['frontLightOff', 'backLightOff'], on: ['frontLightOn', 'backLightOn']
|
||||
@ -291,18 +294,54 @@ var SOController = (function() {
|
||||
};
|
||||
|
||||
var notifyConfirm = function(r) {
|
||||
console.log(r);
|
||||
console.log('notifyConfirm', r);
|
||||
};
|
||||
|
||||
var cordovaNotify = function(d) {
|
||||
navigator.notification.confirm(
|
||||
d.msg, // message
|
||||
notifyConfirm, // callback to invoke with index of button pressed
|
||||
'Smartoffice Console', // title
|
||||
['Extend','Ignore'] // buttonLabels
|
||||
);
|
||||
try {
|
||||
navigator.notification.beep(1);
|
||||
} catch(e)
|
||||
{
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
try {
|
||||
navigator.notification.confirm(
|
||||
d.msg, // message
|
||||
notifyConfirm, // callback to invoke with index of button pressed
|
||||
'Smartoffice Console', // title
|
||||
['Extend','Ignore'] // buttonLabels
|
||||
);
|
||||
|
||||
} catch(e)
|
||||
{
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
var setupPush = function() {
|
||||
console.log('Setting up push notifications..');
|
||||
|
||||
var push = PushNotification.init({"android":{},"ios":iosConfig,"windows":{}});
|
||||
|
||||
push.on('registration', function(d) {
|
||||
console.log('Registration: ', JSON.stringify(d));
|
||||
$.post(path + 'api/v1/register/ios', d, function() {});
|
||||
});
|
||||
|
||||
push.on('notification', function(d) {
|
||||
console.log('Notification: ', d);
|
||||
});
|
||||
|
||||
push.on('error', function(e) {
|
||||
console.error('Push error:', e);
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
//
|
||||
|
||||
module.init = function() {
|
||||
@ -310,6 +349,7 @@ var SOController = (function() {
|
||||
clock();
|
||||
weatherClock();
|
||||
soWebSocket = new SOWEBSOCKET(this);
|
||||
setupPush();
|
||||
};
|
||||
|
||||
module.updateCalendar = function(data) {
|
||||
@ -322,14 +362,13 @@ var SOController = (function() {
|
||||
|
||||
module.notify = function(d) {
|
||||
if (window.cordova && !(window.cordova instanceof HTMLElement)) {
|
||||
document.addEventListener('deviceready', onDeviceReady, false);
|
||||
cordovaNotify(d);
|
||||
} else {
|
||||
browserNotify(d);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
return module;
|
||||
})();
|
||||
|
||||
|
@ -8,6 +8,12 @@ var events = require('events');
|
||||
var eventBus ;
|
||||
var util = require('util');
|
||||
|
||||
var pushNotifications = require('node-pushnotifications');
|
||||
|
||||
var gcmSender = new gcm.Sender({
|
||||
key: 'AIzaSyBl1vJ00d_lMb5yKGp97jZ94Oc70GRpZiw'
|
||||
});
|
||||
|
||||
var officeController = function(neweventbus) {
|
||||
|
||||
logger.debug((typeof neweventbus));
|
||||
@ -93,6 +99,29 @@ officeController.prototype.announceMeetingEnd = function(meeting) {
|
||||
var packet = {id: 'announce', msg: msg, uid: meeting.uid};
|
||||
|
||||
eventBus.emit('sendSocket', packet);
|
||||
|
||||
var message = new gcm.Message({
|
||||
collapse_key: 'test',
|
||||
data: {
|
||||
key1: 'value1'
|
||||
},
|
||||
delay_while_idle: true,
|
||||
time_to_live: 34,
|
||||
dry_run: false
|
||||
});
|
||||
|
||||
sender.sendMessage(message.toJSON(), '', true, function(err, data) {
|
||||
if (!err) {
|
||||
logger.info('Message sent');
|
||||
logger.debug(data);
|
||||
// do something
|
||||
} else {
|
||||
logger.error('Message failed');
|
||||
logger.error(err);
|
||||
// handle error
|
||||
}
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
7
routes/register_v1.js
Normal file
7
routes/register_v1.js
Normal file
@ -0,0 +1,7 @@
|
||||
/**
|
||||
*
|
||||
* User: Martin Donnelly
|
||||
* Date: 2016-04-28
|
||||
* Time: 16:51
|
||||
*
|
||||
*/
|
Loading…
Reference in New Issue
Block a user