initial commit
[JIRC.git] / node_modules / websocket-server / test / manual / dev-server.js
CommitLineData
39c8b14f 1var sys = require("sys")
2 , fs = require("fs")
3 , Path = require("path")
4 , http = require("http")
5 , crypto = require("crypto")
6 , ws = require('../lib/ws/server');
7
8console.log(process.pid);
9
10/*-----------------------------------------------
11 logging:
12-----------------------------------------------*/
13var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
14
15function pad(n) {
16 return n < 10 ? '0' + n.toString(10) : n.toString(10);
17}
18
19function timestamp() {
20 var d = new Date();
21 return [
22 d.getDate(),
23 months[d.getMonth()],
24 [ pad(d.getHours())
25 , pad(d.getMinutes())
26 , pad(d.getSeconds())
27 , (d.getTime() + "").substr( - 4, 4)
28 ].join(':')
29 ].join(' ');
30};
31
32function log(msg) {
33 sys.puts(timestamp() + ' - ' + msg.toString());
34};
35
36var cache = {};
37function readPage(path, callback){
38 if(cache[path]) {
39 callback(cache[path]);
40 } else {
41 cache[path] = [];
42
43 fs.createReadStream( Path.normalize(Path.join(__dirname, path)), {
44 'flags': 'r',
45 'encoding': 'binary',
46 'mode': 0666,
47 'bufferSize': 4 * 1024
48 }).addListener("data", function(chunk){
49 cache[path].push(chunk);
50 }).on("end", function(){
51 callback(cache[path]);
52 });
53 }
54}
55
56readPage("client.html", function(){});
57
58var reqnum = 0;
59function serveFile(req, res){
60 if(req.method == "GET"){
61 if( req.url.indexOf("favicon") > -1 ){
62 log("HTTP: inbound request, served nothing, (favicon)");
63
64 res.writeHead(200, {'Content-Type': 'image/x-icon'});
65 res.end("");
66 } else {
67 log("HTTP: inbound request, served client.html");
68 res.writeHead(200, {'Content-Type': 'text/html', 'Connection': 'close'});
69 readPage("client.html", function(data){
70 data.forEach(function(datum){
71 res.write(datum);
72 });
73
74 res.end();
75 });
76 }
77 } else {
78 res.writeHead(200, {'Content-Type': 'text/html'});
79 res.end();
80 }
81};
82
83/*-----------------------------------------------
84 Spin up our server:
85-----------------------------------------------*/
86
87var certPem = fs.readFileSync(Path.normalize(Path.join(__dirname, "ssl/cert.pem")), 'ascii');
88var keyPem = fs.readFileSync(Path.normalize(Path.join(__dirname, "ssl/cert.key")), 'ascii');
89
90var credentials = crypto.createCredentials({key:keyPem, cert:certPem});
91
92
93var httpServer = http.createServer(serveFile);
94
95
96var server = ws.createServer({
97 debug: true,
98 useStorage: true,
99 server: httpServer
100});
101server.setSecure(credentials);
102
103
104server.addListener("listening", function(){
105 log("Listening for connections.");
106});
107
108// Handle WebSocket Requests
109server.addListener("connection", function(conn){
110 conn.send("Connection: "+conn.id);
111 conn.broadcast("<"+conn.id+"> connected");
112 conn.addListener("message", function(message){
113 conn.broadcast("<"+conn.id+"> "+message);
114// conn.storage.incr("messages");
115 });
116});
117
118server.addListener("close", function(conn){
119// sys.puts(conn.id+" sent "+conn.storage.get("messages"));
120 server.broadcast("<"+conn.id+"> disconnected");
121});
122
123server.listen(8000);