Skip to content

Commit 87a658f

Browse files
committed
server being used for web-sockets example
1 parent 3cd60eb commit 87a658f

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed

server/custom-echo.js

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// slightly modified version of echo-server.js for the web-sockets demo
2+
3+
var sys = require("sys")
4+
, fs = require("fs")
5+
, path = require("path")
6+
, http = require("http")
7+
, ws = require('../lib/ws');
8+
9+
/*-----------------------------------------------
10+
logging:
11+
-----------------------------------------------*/
12+
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
13+
14+
function pad(n) {
15+
return n < 10 ? '0' + n.toString(10) : n.toString(10);
16+
}
17+
18+
function timestamp() {
19+
var d = new Date();
20+
return [
21+
d.getDate(),
22+
months[d.getMonth()],
23+
[ pad(d.getHours())
24+
, pad(d.getMinutes())
25+
, pad(d.getSeconds())
26+
, (d.getTime() + "").substr( - 4, 4)
27+
].join(':')
28+
].join(' ');
29+
};
30+
31+
function log(msg) {
32+
sys.puts(timestamp() + ' - ' + msg.toString());
33+
};
34+
35+
function serveFile(req, res){
36+
if( req.url.indexOf("favicon") > -1 ){
37+
log("HTTP: inbound request, served nothing, (favicon)");
38+
39+
res.writeHead(200, {'Content-Type': 'image/x-icon'});
40+
res.end("");
41+
} else {
42+
log("HTTP: inbound request, served client.html");
43+
44+
res.writeHead(200, {'Content-Type': 'text/html'});
45+
fs.createReadStream( path.normalize(path.join(__dirname, "client.html")), {
46+
'flags': 'r',
47+
'encoding': 'binary',
48+
'mode': 0666,
49+
'bufferSize': 4 * 1024
50+
}).addListener("data", function(chunk){
51+
res.write(chunk, 'binary');
52+
}).addListener("close",function() {
53+
res.end();
54+
});
55+
}
56+
};
57+
58+
/*-----------------------------------------------
59+
Spin up our server:
60+
-----------------------------------------------*/
61+
var httpServer = http.createServer(serveFile);
62+
63+
64+
var connected = 0;
65+
var server = ws.createServer({
66+
debug: true
67+
}, httpServer);
68+
69+
server.addListener("listening", function(){
70+
log("Listening for connections on " + process.ARGV[2]);
71+
});
72+
73+
// Handle WebSocket Requests
74+
server.addListener("connection", function(conn){
75+
log("opened connection: "+conn.id);
76+
77+
connected++;
78+
server.send(conn.id, connected+'');
79+
conn.broadcast(connected+'');
80+
81+
conn.addListener("message", function(message){
82+
log("<"+conn.id+"> "+message);
83+
conn.broadcast(message);
84+
});
85+
});
86+
87+
server.addListener("close", function(conn){
88+
log("closed connection: "+conn.id);
89+
connected--;
90+
conn.broadcast(connected+'');
91+
});
92+
93+
server.listen(parseInt(process.ARGV[2]) || 8000);
94+
// Handle HTTP Requests:
95+
96+
// This will hijack the http server, if the httpserver doesn't
97+
// already respond to http.Server#request
98+
99+
// server.addListener("request", serveFile);

0 commit comments

Comments
 (0)