/
server.js
56 lines (42 loc) · 1.63 KB
/
server.js
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
var fs = require('fs'),
path = require('path'),
http = require('http'),
https = require('https'),
faye = require('../../build/node/faye-node');
// faye.Logging.logLevel = 'debug';
var SHARED_DIR = path.dirname(__filename) + '/../shared',
PUBLIC_DIR = SHARED_DIR + '/public',
bayeux = new faye.NodeAdapter({mount: '/bayeux', timeout: 20}),
port = process.argv[2] || '8000',
secure = process.argv[3] === 'ssl',
sslOpts = {
key: fs.readFileSync(SHARED_DIR + '/server.key'),
cert: fs.readFileSync(SHARED_DIR + '/server.crt')
};
var handleRequest = function(request, response) {
var path = (request.url === '/') ? '/index.html' : request.url;
fs.readFile(PUBLIC_DIR + path, function(err, content) {
var status = err ? 404 : 200;
response.writeHead(status, {'Content-Type': 'text/html'});
response.write(content || 'Not found');
response.end();
});
};
var server = secure
? https.createServer(sslOpts, handleRequest)
: http.createServer(handleRequest);
bayeux.attach(server);
server.listen(Number(port));
bayeux.getClient().subscribe('/chat/*', function(message) {
console.log('[' + message.user + ']: ' + message.message);
});
bayeux.bind('subscribe', function(clientId, channel) {
console.log('[ SUBSCRIBE] ' + clientId + ' -> ' + channel);
});
bayeux.bind('unsubscribe', function(clientId, channel) {
console.log('[UNSUBSCRIBE] ' + clientId + ' -> ' + channel);
});
bayeux.bind('disconnect', function(clientId) {
console.log('[ DISCONNECT] ' + clientId);
});
console.log('Listening on ' + port + (secure? ' (https)' : ''));