1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
// Requirement of external JS files
var resource = require('./js/resource.js');
// Requirements of nodejs modules
var http = require('http');
var url = require('url');
var fs = require('fs');
var path = require('path');
var webidl2 = require('webidl2');
var escodegen = require('escodegen');
// Parse the web idl files
var file = fs.readFileSync("./NavigationCoreConfiguration.widl");
var tree = webidl2.parse(file.toString());
//console.log(tree);
//console.log(escodegen.generate(tree));
// Requirements of LBS add-on modules
var navigationCoreConfiguration = require(resource.generatedNodejsModulePath+'/NavigationCoreConfiguration');
// Create instances
var i_navigationCoreConfiguration = new navigationCoreConfiguration.NavigationCoreConfiguration();
// Create and init server
var port = 8080;
var hostname = '127.0.0.1';
var server = http.createServer(function(req, res) {
var page = url.parse(req.url).pathname;
var full_path = path.join(process.cwd(),page);
// Check if page exists (for the moment only index.html)
fs.exists(full_path,function(exists){
if(!exists){
res.writeHeader(404, {"Content-Type": "text/plain"});
res.write("404 Not Found\n");
res.end();
}
else{
fs.readFile(full_path, "binary", function(err, file) {
if(err) {
res.writeHeader(500, {"Content-Type": "text/plain"});
res.write(err + "\n");
res.end();
}
else{
res.writeHeader(200);
res.write(file, "binary");
res.end();
}
});
}
});
});
// Launch server
server.listen(port);
// Load socket.io
var io = require('socket.io').listen(server);
// On connection
io.sockets.on('connection', function (socket) {
console.log('Client connected');
socket.on('navigationcore_request', function (message) {
if (message.method in i_navigationCoreConfiguration && typeof i_navigationCoreConfiguration[message.method] === "function") {
console.log('Message received: Interface-->' + message.interface +' Method-->', message.method +' Parameters-->' + message.parameters);
var data = i_navigationCoreConfiguration[message.method](message.parameters);
if(data) {
socket.emit('navigationcore_answer', {request: message.method, answer: data});
}
}
else {
console.log("Could not find " + message.method + " function");
socket.emit('feedback', "Could not find " + message.method + " function");
}
});
});
// Log info
console.log('Server listening at: %s', server.address().port);
|