From 1e7d7a8b695aa6c086a1dfeb46b7158d9dc405f6 Mon Sep 17 00:00:00 2001 From: alaingilbert Date: Wed, 16 Nov 2011 00:22:26 -0500 Subject: [PATCH 1/4] Fix the lib for v0.5 and v0.6 of nodejs. It's also backward compatible with v0.4 --- lib/websocket.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/websocket.js b/lib/websocket.js index aece46e..fbbb2e4 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -5,7 +5,7 @@ var events = require('events'); var http = require('http'); var net = require('net'); var urllib = require('url'); -var sys = require('sys'); +var sys = require('util'); var FRAME_NO = 0; var FRAME_LO = 1; @@ -470,10 +470,22 @@ var WebSocket = function(url, proto, opts) { // un-inspected to net.Stream.connect(). The latter accepts a // string as its first argument to connect to a UNIX socket. var httpClient = undefined; + var oldVersion = false; switch (getUrlScheme(url)) { case 'ws': var u = urllib.parse(url); - httpClient = http.createClient(u.port || 80, u.hostname); + var options = { + port: u.port || 80, + host: u.hostname, + path: u.path, + headers: httpHeaders + }; + if (+/^v0.([0-9]+).[0-9]+$/.exec(process.version)[1] <= 4) { + httpClient = http.createClient(u.port || 80, u.hostname); + oldVersion = true; + } else { + httpClient = http.request(options); + } httpPath = (u.pathname || '/') + (u.search || ''); httpHeaders.Host = u.hostname + (u.port ? (":" + u.port) : ""); break; @@ -581,7 +593,8 @@ var WebSocket = function(url, proto, opts) { errorListener(e); }); - var httpReq = httpClient.request(httpPath, httpHeaders); + if (oldVersion) { var httpReq = httpClient.request(httpPath, httpHeaders); } + else { var httpReq = httpClient; } httpReq.write(challenge, 'binary'); httpReq.end(); From aec3530476ecd9515381ea8dc02590570e8a8490 Mon Sep 17 00:00:00 2001 From: alaingilbert Date: Fri, 18 Nov 2011 15:22:01 -0500 Subject: [PATCH 2/4] cleaner --- lib/websocket.js | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/lib/websocket.js b/lib/websocket.js index fbbb2e4..31f3a14 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -5,7 +5,9 @@ var events = require('events'); var http = require('http'); var net = require('net'); var urllib = require('url'); -var sys = require('util'); + +var oldVersion = +/^v0.([0-9]+).[0-9]+$/.exec(process.version)[1] <= 4; +var sys = oldVersion ? require('sys') : require('util'); var FRAME_NO = 0; var FRAME_LO = 1; @@ -470,24 +472,18 @@ var WebSocket = function(url, proto, opts) { // un-inspected to net.Stream.connect(). The latter accepts a // string as its first argument to connect to a UNIX socket. var httpClient = undefined; - var oldVersion = false; switch (getUrlScheme(url)) { case 'ws': var u = urllib.parse(url); + httpPath = (u.pathname || '/') + (u.search || ''); + httpHeaders.Host = u.hostname + (u.port ? (":" + u.port) : ""); var options = { port: u.port || 80, host: u.hostname, - path: u.path, + path: httpPath, headers: httpHeaders }; - if (+/^v0.([0-9]+).[0-9]+$/.exec(process.version)[1] <= 4) { - httpClient = http.createClient(u.port || 80, u.hostname); - oldVersion = true; - } else { - httpClient = http.request(options); - } - httpPath = (u.pathname || '/') + (u.search || ''); - httpHeaders.Host = u.hostname + (u.port ? (":" + u.port) : ""); + httpClient = oldVersion ? http.createClient(u.port || 80, u.hostname) : http.request(options); break; case 'ws+unix': @@ -593,8 +589,7 @@ var WebSocket = function(url, proto, opts) { errorListener(e); }); - if (oldVersion) { var httpReq = httpClient.request(httpPath, httpHeaders); } - else { var httpReq = httpClient; } + var httpReq = oldVersion ? httpClient.request(httpPath, httpHeaders) : httpClient; httpReq.write(challenge, 'binary'); httpReq.end(); From 25d9cf7e485d10f0a3df1b14c3b4438860d8d842 Mon Sep 17 00:00:00 2001 From: alaingilbert Date: Fri, 18 Nov 2011 15:30:09 -0500 Subject: [PATCH 3/4] fix regex --- lib/websocket.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/websocket.js b/lib/websocket.js index 31f3a14..da0b7ef 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -6,7 +6,8 @@ var http = require('http'); var net = require('net'); var urllib = require('url'); -var oldVersion = +/^v0.([0-9]+).[0-9]+$/.exec(process.version)[1] <= 4; +var reg = /^v0.([0-9]+).[0-9]+$/.exec(process.version); +var oldVersion = reg ? +reg[1] <= 4 : false; var sys = oldVersion ? require('sys') : require('util'); var FRAME_NO = 0; From 18bafa928421108a4e215e596031c96d940561ad Mon Sep 17 00:00:00 2001 From: alaingilbert Date: Wed, 7 Dec 2011 09:47:23 -0500 Subject: [PATCH 4/4] fix regex --- lib/websocket.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/websocket.js b/lib/websocket.js index da0b7ef..0c5479f 100644 --- a/lib/websocket.js +++ b/lib/websocket.js @@ -6,7 +6,7 @@ var http = require('http'); var net = require('net'); var urllib = require('url'); -var reg = /^v0.([0-9]+).[0-9]+$/.exec(process.version); +var reg = /^v0.([0-9]+)/i.exec(process.version); var oldVersion = reg ? +reg[1] <= 4 : false; var sys = oldVersion ? require('sys') : require('util');