Compare commits

...

8 Commits

Author SHA1 Message Date
James Coglan 854c0a9658 Bump version to 0.10.0. 2015-07-08 21:10:01 +01:00
James Coglan d753d09372 Remove the optional signifier from the ping() docs. 2015-07-04 21:23:02 +01:00
James Coglan febde17f0e Store the closing parameters (code and reason) before calling 'finalize', so they are emitted if there is no socket connected. 2015-07-04 18:33:13 +01:00
James Coglan c52271c308 Update the TLS certificates since the old ones had expired. 2015-06-22 11:17:22 +01:00
James Coglan 8460dd9f03 Add the code and reason parameters to the close() API call. 2015-06-22 10:47:50 +01:00
James Coglan 66fc108591 Replace 'iff' with 'if and only if'. 2015-03-28 19:43:43 +00:00
James Coglan 58491dea2b Use permessage-deflate in the client example, and tweak code style a bit. 2015-03-28 09:47:36 +00:00
James Coglan cd220deb74 Remove an unneeded crypto import. 2015-03-28 09:47:08 +00:00
10 changed files with 63 additions and 45 deletions
+4
View File
@@ -1,3 +1,7 @@
### 0.10.0 / 2015-07-08
* Add the standard `code` and `reason` parameters to the `close` method
### 0.9.4 / 2015-03-08
* Don't send input to the driver before `start()` is called
+4 -3
View File
@@ -77,8 +77,9 @@ If you need to detect when the WebSocket handshake is complete, you can use the
If the connection's protocol version supports it, you can call `ws.ping()` to
send a ping message and wait for the client's response. This method takes a
message string, and an optional callback that fires when a matching pong message
is received. It returns `true` iff a ping message was sent. If the client does
not support ping/pong, this method sends no data and returns `false`.
is received. It returns `true` if and only if a ping message was sent. If the
client does not support ping/pong, this method sends no data and returns
`false`.
```js
ws.ping('Mic check, one, two', function() {
@@ -221,7 +222,7 @@ Both server- and client-side `WebSocket` objects support the following API.
that closed the connection.
* <b>`send(message)`</b> accepts either a `String` or a `Buffer` and sends a
text or binary message over the connection to the other peer.
* <b>`ping(message = '', function() {})`</b> sends a ping frame with an optional
* <b>`ping(message, function() {})`</b> sends a ping frame with an optional
message and fires the callback when a matching pong is received.
* <b>`close(code, reason)`</b> closes the connection, sending the given status
code and reason text, both of which are optional.
+4 -4
View File
@@ -1,4 +1,4 @@
var WebSocket = require('../lib/faye/websocket'),
var WebSocket = require('..').Client,
deflate = require('permessage-deflate'),
pace = require('pace');
@@ -7,7 +7,7 @@ var host = 'ws://localhost:9001',
cases = 0,
options = {extensions: [deflate]};
var socket = new WebSocket.Client(host + '/getCaseCount'),
var socket = new WebSocket(host + '/getCaseCount'),
url, progress;
socket.onmessage = function(event) {
@@ -19,13 +19,13 @@ socket.onmessage = function(event) {
var runCase = function(n) {
if (n > cases) {
url = host + '/updateReports?agent=' + agent;
socket = new WebSocket.Client(url);
socket = new WebSocket(url);
socket.onclose = process.exit;
return;
}
url = host + '/runCase?case=' + n + '&agent=' + agent;
socket = new WebSocket.Client(url, [], options);
socket = new WebSocket(url, [], options);
socket.pipe(socket);
socket.on('close', function() {
+14 -7
View File
@@ -1,11 +1,18 @@
var WebSocket = require('../lib/faye/websocket'),
fs = require('fs');
var WebSocket = require('..').Client,
deflate = require('permessage-deflate'),
fs = require('fs');
var url = process.argv[2],
headers = {Origin: 'http://faye.jcoglan.com'},
ca = fs.readFileSync(__dirname + '/../spec/server.crt'),
proxy = {origin: process.argv[3], headers: {'User-Agent': 'Echo'}, tls: {ca: ca}},
ws = new WebSocket.Client(url, [], {headers: headers, proxy: proxy, tls: {ca: ca}});
var url = process.argv[2],
proxy = process.argv[3],
ca = fs.readFileSync(__dirname + '/../spec/server.crt'),
tls = {ca: ca};
var ws = new WebSocket(url, [], {
proxy: {origin: proxy, headers: {'User-Agent': 'Echo'}, tls: tls},
tls: tls,
headers: {Origin: 'http://faye.jcoglan.com'},
extensions: [deflate]
});
ws.onopen = function() {
console.log('[open]', ws.headers);
+1 -1
View File
@@ -1,4 +1,4 @@
var WebSocket = require('../lib/faye/websocket'),
var WebSocket = require('..'),
deflate = require('permessage-deflate'),
fs = require('fs'),
http = require('http'),
+11 -3
View File
@@ -92,9 +92,17 @@ var instance = {
return this._driver.ping(message, callback);
},
close: function() {
close: function(code, reason) {
if (code === undefined) code = 1000;
if (reason === undefined) reason = '';
if (code !== 1000 && (code < 3000 || code > 4999))
throw new Error("Failed to execute 'close' on WebSocket: " +
"The code must be either 1000, or between 3000 and 4999. " +
code + " is neither.");
if (this.readyState !== API.CLOSED) this.readyState = API.CLOSING;
this._driver.close();
this._driver.close(reason, code);
},
_configureStream: function() {
@@ -145,12 +153,12 @@ var instance = {
_beginClose: function(reason, code) {
if (this.readyState === API.CLOSED) return;
this.readyState = API.CLOSING;
this._closeParams = [reason, code];
if (this._stream) {
this._stream.end();
if (!this._stream.readable) this._finalizeClose();
}
this._closeParams = [reason, code];
},
_finalizeClose: function() {
-1
View File
@@ -1,7 +1,6 @@
var util = require('util'),
net = require('net'),
tls = require('tls'),
crypto = require('crypto'),
url = require('url'),
driver = require('websocket-driver'),
API = require('./api'),
+1 -1
View File
@@ -5,7 +5,7 @@
, "keywords" : ["websocket", "eventsource"]
, "license" : "MIT"
, "version" : "0.9.4"
, "version" : "0.10.0"
, "engines" : {"node": ">=0.4.0"}
, "main" : "./lib/faye/websocket"
, "dependencies" : {"websocket-driver": ">=0.5.1"}
+11 -12
View File
@@ -1,14 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICIzCCAYwCCQDZaunNGmqaHjANBgkqhkiG9w0BAQUFADBWMQswCQYDVQQGEwJH
QjETMBEGA1UECBMKU29tZS1TdGF0ZTEPMA0GA1UEBxMGTG9uZG9uMQ0wCwYDVQQK
EwRGYXllMRIwEAYDVQQDEwlsb2NhbGhvc3QwHhcNMTQwNjIxMDkzNjAyWhcNMTUw
NjIxMDkzNjAyWjBWMQswCQYDVQQGEwJHQjETMBEGA1UECBMKU29tZS1TdGF0ZTEP
MA0GA1UEBxMGTG9uZG9uMQ0wCwYDVQQKEwRGYXllMRIwEAYDVQQDEwlsb2NhbGhv
c3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANc64/S51F2OVw1IGZql483S
sUf7QiuHyHCYxeHB8CeTKXyaH5h3ITmmqjzT5MWgTYuXf39XRf2VqicLWqs0xIAc
RKBE1VouLM0sbNzMv1yNG7im0bMywXNlOlOmUhtjYZvEx5I10UiJrVxIpEnNiCuZ
dgCuB944l/lQrndkaqWtAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEA1UmNwUA7KVaU
jg3iofsr0UgFCNO9sZ6PeEoh6NETrckhYd1TB3S7QAgHMiu4e8cEVnlYyIm6oJnp
l5edfaUHh3PGwt5jLzpg/l+OVT5qkixRJdazx+pd/CFYIgot2+7hEao9NC4GV1Tl
yR0IxlKRsQO3iZlpe7/Klqjaq/r9tQM=
MIIB+TCCAWICCQDQSYOsy9QdQzANBgkqhkiG9w0BAQUFADBBMQswCQYDVQQGEwJV
SzEPMA0GA1UECBMGTG9uZG9uMQ0wCwYDVQQKEwRGYXllMRIwEAYDVQQDEwlsb2Nh
bGhvc3QwHhcNMTUwNjIyMTAxNjUxWhcNMTYwNjIxMTAxNjUxWjBBMQswCQYDVQQG
EwJVSzEPMA0GA1UECBMGTG9uZG9uMQ0wCwYDVQQKEwRGYXllMRIwEAYDVQQDEwls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM8rbhbRDJlVsXdJ
zP4QmQFTXZASd9P/rkxLM1J20N64YSNvaKsX4T/lq/detzMxfP82SKoHN3ItTIyI
/DiSRWRQVfQ0f9m3xEPpbyvyHViyzRayy+xPGoqC27yTd+03KtMi8w/BrKUqDwFO
xwmFPLxsOsBvcUztzKt/4GPao3htAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAALfl
U2nO8N8KTziEsJkLc6JV5jGCoUQnhttsq6l07fZpTpX9nuF8tKhZ2jSNL5DntAqm
M48g9rKd4wKp6IsPa66bkp/6u9k6hL2EhSWQTI7ii5Ap6u649XMB/lTEY4ZK/OGn
dnWXbPWznhgi30ROUzxUCev+yRVdlgLBJFerXzk=
-----END CERTIFICATE-----
+13 -13
View File
@@ -1,15 +1,15 @@
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDXOuP0udRdjlcNSBmapePN0rFH+0Irh8hwmMXhwfAnkyl8mh+Y
dyE5pqo80+TFoE2Ll39/V0X9laonC1qrNMSAHESgRNVaLizNLGzczL9cjRu4ptGz
MsFzZTpTplIbY2GbxMeSNdFIia1cSKRJzYgrmXYArgfeOJf5UK53ZGqlrQIDAQAB
AoGBAK8U+NrbUCXK5IWpYSqsR+PmwNANVIaUrjjqDg7X9MQ8skLqHUmpnx2GtnVE
6ZTaEjq7wruUAxuF5CRe2CLtieouaLvF/gcAsff2Q4kL8taDrM54ECC69JFfijE4
jJfEkoJRi1B0nq2QxJke3Sm3vrW2zLDqAZ4EUIh3uxXIYgcBAkEA+imv190S+bCM
3H/3L5LHeTRwL58HWcYYjx+/K85yaCqf4wrwyYQ1jRho76uqkjq1mvL65nOniIxd
NRnLTiQ+jwJBANxAiY4ww16fUkBGBh2np0FfDUhWgk5G5aZWHsK+5SJZXvlV0kmn
kf2R+8hEzAAaOh3Y4d4UBXzOZCKh0nxYdgMCQQCNsQ7oNU+KHXWrbs+TIo/ZFtp0
Hp8LOiiu6Exfg49JcNsevhOkED5ErI7DMXhrWtWB7h4uaVN7BAXHDdUZbW4BAkAp
Yys1/+3GaxPOphniGq3wN8dML41e3i2rOwWevLZb5QVWvwy78HQbfQIeGOdooYUI
NMgErih10ma4p0XhPdI3AkBFp830jNItVGZtVvNRmtx2AR370qMs+AwFTK76mcMW
xysAGnAUv7h6Qx+M6b3He8OcWVMNqMiv8yI/o2PnsvUS
MIICXQIBAAKBgQDPK24W0QyZVbF3Scz+EJkBU12QEnfT/65MSzNSdtDeuGEjb2ir
F+E/5av3XrczMXz/NkiqBzdyLUyMiPw4kkVkUFX0NH/Zt8RD6W8r8h1Yss0Wssvs
TxqKgtu8k3ftNyrTIvMPwaylKg8BTscJhTy8bDrAb3FM7cyrf+Bj2qN4bQIDAQAB
AoGBAJym5nPyV2iK18qvz4Y93rSV6SXMETgJGi8unfw5Q+9l1G4LDEZzpCvA66v9
vuHDBhWlYoTPOCnp/vw1iSLt1/GJw62Hou8ewWJ/lrhiGHONwSWdWFV+G0juSXp/
yNos8ZvqOn8l67uremEIqsNqOZ3hJXKauEp4i1OF7W4y+Q6xAkEA891VfTKtL1yQ
5uLu+8drzXc9NVLnG0VVKZGg5sCfqhmijklcG7kdfNW66ujsVs3MlROsfPmC1k6B
OQN7i3h0lwJBANl6oMPnXxEnSOCSG1Ff6wEKnfdl3wuI9w+XTYd2jdi3oTffEYU0
l1KvtyfcpX5K254FhY3c86RI2l1XAeN5R5sCQBsqzCxPafW9xTLDk0YfWEYig4Ie
QzrJhYxE+fza9q6XfoGFcKpx+/P9R36GBlZBRQpSj8O4dDf1tPWqCqhl+e8CQCTp
/6fA+g37UQ9tPV3OniELIE0B6Z4XnXf0AqDfqqwCX0cQgfTOPHE4iiol9aE+K5Di
9wxhWKmmBAqb3iIyT8kCQQCtZiSOAu75DZdufUDUoAXCXPOwxga3Km+FoloRkp5e
O2fJKycb9tnoeMvXqLHBV7FjKH+9fPfOnKpPSETWho+8
-----END RSA PRIVATE KEY-----