-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
84 lines (71 loc) · 2.08 KB
/
app.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
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
83
84
/**
* Module dependencies.
*/
var express = require('express')
, routes = require('./routes/index')
, user = require('./routes/user')
, http = require('http')
, path = require('path');
var app = express();
app.configure(function () {
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
});
app.configure('development', function () {
app.use(express.errorHandler());
});
app.locals({
title:'Kitchensink'
});
app.get('/', routes.index);
app.get('/websocket', routes.websocket);
app.get('/webworker', routes.webworker);
app.get('/file', routes.file);
app.get('/users', user.list);
var server = http.createServer(app).listen(app.get('port'), function () {
console.log("Express server listening on port " + app.get('port'));
});
var WebSocketServer = require('ws').Server;
var wssEcho = new WebSocketServer({
server:server,
path:'/echo'
});
wssEcho.on('connection', function (ws) {
ws.on('message', function (message) {
ws.send(message);
})
});
var wssChat = new WebSocketServer({
server:server,
path:'/chat'
});
var connections = [];
wssChat.on('connection', function (ws) {
connections.push(ws);
connections.forEach(function (ws) {
if (!ws) return;
ws.send('User' + connections.length + ' connected.');
});
ws.on('message', function (message) {
var index = connections.indexOf(ws);
connections.forEach(function (ws) {
if (!ws) return;
ws.send('User' + (index + 1) + ': ' + message);
});
})
ws.on('close', function () {
var index = connections.indexOf(ws);
connections.splice(index, 1, undefined);
connections.forEach(function (ws) {
if (!ws) return;
ws.send('User' + (index + 1) + ' disconnected.');
});
})
});