help-fem
Version:
A Browserify/Node.js client module for the Help.com team's FEM.
72 lines (59 loc) • 1.38 kB
JavaScript
;
// This is a websocket server that is used to mock
// femio calls.
var Server = require('ws').Server;
var uuid = require('uuid');
var Message = require('./message');
// Note, whoever requires this is responsible for closing
// the server
var wss = new Server({ port: 8000 }, function(err) {
if (err) {
throw err;
}
wss.isListening = true;
});
wss.isListening = false;
wss.clientId = uuid.v4();
module.exports = wss;
wss.on('connection', function(ws) {
ws.on('message', handleMessage);
ws.on('error', console.error);
});
wss.on('error', console.error)
function handleMessage(msg) {
msg = JSON.parse(msg);
var type = msg.event;
switch (type) {
case 'client session event':
handleSession(this, msg.message);
break;
case 'client chat event':
handleChat(this, msg.message);
break;
default:
console.log('unhandled event', msg);
break;
}
}
function handleSession(socket, msg) {
var type = msg.meta.type;
var m = new Message('server session event', {
meta: {
result: 'SUCCESS',
type: type
},
data: {}
}, msg);
socket.send(m.toJSON());
}
function handleChat(socket, msg) {
var type = msg.meta.type;
var m = new Message('server chat event', {
meta: {
result: 'SUCCESS',
type: type
},
data: {}
}, msg);
socket.send(m.toJSON());
}