Socket
Socket
Sign inDemoInstall

ws

Package Overview
Dependencies
Maintainers
1
Versions
169
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ws - npm Package Compare versions

Comparing version 0.4.2 to 0.4.3

5

History.md

@@ -0,1 +1,6 @@

v0.4.3 - Feb 4th 2012
=====================
* Prioritized update: Corrected issue which would cause sockets to stay open longer than necessary, and resource leakage because of this. [einaros]
v0.4.2 - Feb 4th 2012

@@ -2,0 +7,0 @@ =====================

108

lib/WebSocket.js

@@ -40,2 +40,3 @@ /*!

}
Object.defineProperty(this, '_socket', { writable: true, value: null });

@@ -55,16 +56,4 @@ Object.defineProperty(this, 'readyState', {

if (Object.prototype.toString.call(address) == '[object Array]') {
/**
* Act as server client
*/
initAsServerClient.apply(this, address.concat(options));
}
else {
/**
* Act as regular client
*/
initAsClient.apply(this, arguments);
}
if (Object.prototype.toString.call(address) == '[object Array]') initAsServerClient.apply(this, address.concat(options));
else initAsClient.apply(this, arguments);
}

@@ -336,4 +325,4 @@

// establish connection
if (options.value.protocolVersion == 'hixie-76') establishHixieConnection.call(this, socket, upgradeHead);
else establishHybiConnection.call(this, socket, upgradeHead);
if (options.value.protocolVersion == 'hixie-76') establishConnection.call(this, ReceiverHixie, SenderHixie, socket, upgradeHead);
else establishConnection.call(this, Receiver, Sender, socket, upgradeHead);
}

@@ -429,3 +418,3 @@

establishHybiConnection.call(self, socket, upgradeHead);
establishConnection.call(self, Receiver, Sender, socket, upgradeHead);
});

@@ -437,3 +426,3 @@

function establishHybiConnection(socket, upgradeHead) {
function establishConnection(ReceiverClass, SenderClass, socket, upgradeHead) {
this._socket = socket;

@@ -446,2 +435,11 @@ socket.setTimeout(0);

self._readyState = WebSocket.CLOSED;
if (self._socket) {
self._socket.removeAllListeners();
self._socket.end();
self._socket = null;
}
if (self._sender) {
self._sender.removeAllListeners();
self._sender = null;
}
self.emit('close', self._closeCode || 1000, self._closeMessage || '');

@@ -452,69 +450,15 @@ });

self._readyState = WebSocket.CLOSED;
self.emit('close', self._closeCode || 1000, self._closeMessage || '');
});
var receiver = new Receiver();
socket.on('data', function (data) {
receiver.add(data);
});
receiver.on('text', function (data, flags) {
flags = flags || {};
self.emit('message', data, flags);
});
receiver.on('binary', function (data, flags) {
flags = flags || {};
flags.binary = true;
self.emit('message', data, flags);
});
receiver.on('ping', function(data, flags) {
flags = flags || {};
self.pong(data, {mask: !self._isServer, binary: flags.binary === true});
self.emit('ping', data, flags);
});
receiver.on('pong', function(data, flags) {
self.emit('pong', data, flags);
});
receiver.on('close', function(code, data, flags) {
flags = flags || {};
self.close(code, data, {mask: !self._isServer});
});
receiver.on('error', function(reason, errorCode) {
// close the connection when the receiver reports a HyBi error code
if (typeof errorCode !== 'undefined') {
self.close(errorCode, '', {mask: !self._isServer});
if (self._socket) {
self._socket.removeAllListeners();
self._socket.end();
self._socket = null;
}
self.emit('error', reason, errorCode);
});
Object.defineProperty(this, '_sender', { value: new Sender(socket) });
this._sender.on('error', function(error) {
self.emit('error', error);
});
this._readyState = WebSocket.OPEN;
this.emit('open');
if (upgradeHead && upgradeHead.length > 0) {
process.nextTick(function() {
receiver.add(upgradeHead);
});
}
}
function establishHixieConnection(socket, upgradeHead) {
this._socket = socket;
socket.setTimeout(0);
socket.setNoDelay(true);
var self = this;
socket.on('end', function() {
if (self.readyState == WebSocket.CLOSED) return;
self._readyState = WebSocket.CLOSED;
if (self._sender) {
self._sender.removeAllListeners();
self._sender = null;
}
self.emit('close', self._closeCode || 1000, self._closeMessage || '');
});
socket.on('close', function() {
if (self.readyState == WebSocket.CLOSED) return;
self._readyState = WebSocket.CLOSED;
self.emit('close', self._closeCode || 1000, self._closeMessage || '');
});
var receiver = new ReceiverHixie();
var receiver = new ReceiverClass();
socket.on('data', function (data) {

@@ -552,3 +496,3 @@ receiver.add(data);

Object.defineProperty(this, '_sender', { value: new SenderHixie(socket) });
Object.defineProperty(this, '_sender', { value: new SenderClass(socket) });
this._sender.on('error', function(error) {

@@ -555,0 +499,0 @@ self.emit('error', error);

@@ -42,3 +42,3 @@ /*!

res.writeHead(200, {'Content-Type': 'text/plain'});
res.end();
res.end('Not implemented');
})

@@ -45,0 +45,0 @@ });

@@ -5,3 +5,3 @@ {

"description": "simple to use, blazing fast and thoroughly tested websocket client, server and console for node.js, up-to-date against RFC-6455",
"version": "0.4.2",
"version": "0.4.3",
"repository": {

@@ -8,0 +8,0 @@ "type": "git",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc