Skip to content

Commit

Permalink
transport: rewrite websocket transport to use ws client
Browse files Browse the repository at this point in the history
  • Loading branch information
rauchg committed Aug 13, 2012
1 parent b483dfc commit d558c97
Showing 1 changed file with 49 additions and 9 deletions.
58 changes: 49 additions & 9 deletions lib/transports/websocket.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
* Module requirements.
*/

var protocolVersions = require('./websocket/');
var url = require('url')
, parser = require('../parser')
, Transport = require('../transport');

/**
* Export the constructor.
Expand All @@ -25,12 +27,50 @@ exports = module.exports = WebSocket;
*/

function WebSocket (mng, data, req) {
var transport
, version = req.headers['sec-websocket-version'];
if (typeof version !== 'undefined' && typeof protocolVersions[version] !== 'undefined') {
transport = new protocolVersions[version](mng, data, req);
}
else transport = new protocolVersions['default'](mng, data, req);
if (typeof this.name !== 'undefined') transport.name = this.name;
return transport;
Transport.call(this, mng, data, req);
var self = this;
this.wsclient = req.wsclient;
req.wsclient.onerror = function(){
self.end('socket error');
};
req.wsclient.onclose = function(){
self.end('socket end');
};
req.wsclient.onmessage = function(ev){
self.onMessage(parser.decodePacket(ev.data));
};
};

/**
* Inherits from Transport.
*/

WebSocket.prototype.__proto__ = Transport.prototype;

/**
* Transport name
*
* @api public
*/

WebSocket.prototype.name = 'websocket';

/**
* Writes to the socket.
*
* @api private
*/

WebSocket.prototype.write = function (data) {
this.wsclient.send(data);
};

/**
* Closes the connection.
*
* @api private
*/

WebSocket.prototype.doClose = function () {
this.req.socket.end();
};

0 comments on commit d558c97

Please sign in to comment.