Skip to content

Commit 1ef56a0

Browse files
committed
support attaching to an existing http server
1 parent 4226a21 commit 1ef56a0

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

index.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ function attachServer(server, clientHandler) {
2626
})).on('connection', function(ws) {
2727
clientHandler(wsStream(ws));
2828
});
29+
return server;
2930
}
3031

3132
function createWebSocketServer(clientHandler){
@@ -69,7 +70,10 @@ module.exports = function(serverConfig, sharedConfig, clientStreamHandler){
6970

7071
var server;
7172

72-
if(config.protocol == 'tcp') {
73+
if(config.attach) {
74+
server = attachServer(config.attach, clientStreamHandler);
75+
server._css_exclude = true;
76+
} else if(config.protocol == 'tcp') {
7377
server = createServer(clientStreamHandler);
7478
} else if(config.protocol == 'ssl') {
7579
server = createSecureServer(config.ssl, clientStreamHandler);
@@ -90,20 +94,25 @@ module.exports = function(serverConfig, sharedConfig, clientStreamHandler){
9094
listen: function(callback){
9195
async.mapSeries(Object.keys(servers), function(id, cb){
9296
var server = servers[id];
97+
if(server._css_exclude) return cb();
9398
server.listen(server._css_port, server._css_host, function(){
9499
enableDestroy(server);
95-
cb();
100+
return cb();
96101
});
97102
}, callback || function(){});
98103
},
99104
close: function(callback){
100105
async.mapSeries(Object.keys(servers), function(id, cb){
101-
servers[id].close(cb);
106+
var server = servers[id];
107+
if(server._css_exclude) return cb();
108+
server.close(cb);
102109
}, callback || function(){});
103110
},
104111
destroy: function(callback){
105112
async.mapSeries(Object.keys(servers), function(id, cb){
106-
servers[id].destroy(cb);
113+
var server = servers[id];
114+
if(server._css_exclude) return cb();
115+
server.destroy(cb);
107116
}, callback || function(){});
108117
}
109118
};

tests.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ var assert = require('assert');
22
var fs = require('fs');
33
var net = require('net');
44
var tls = require('tls');
5+
var http = require('http');
56
var ws = require('ws');
67

78
var css = require('./index');
@@ -149,4 +150,20 @@ describe('create-stream-server', function(){
149150
});
150151
});
151152
});
153+
154+
it('should allow attaching ws servers to an existing http server', function(done) {
155+
var httpServer = http.createServer();
156+
157+
var servers = css({
158+
s3: {
159+
attach: httpServer
160+
}
161+
}, function(){});
162+
163+
servers.listen(function () {
164+
servers.close(function () {
165+
done();
166+
});
167+
});
168+
});
152169
});

0 commit comments

Comments
 (0)