Compare commits

...

22 Commits
0.8.2 ... 0.8.4

Author SHA1 Message Date
Guillermo Rauch
9e6f58fe27 Release 0.8.4 2011-09-06 07:48:14 -07:00
Guillermo Rauch
e3fb39da3d Corrected comment; (fixes #433) 2011-09-03 14:33:00 -07:00
Guillermo Rauch
cc275813b5 Updated changelog 2011-09-03 14:06:05 -07:00
Guillermo Rauch
9d57245d65 Release 0.8.3 2011-09-03 12:42:45 -07:00
Guillermo Rauch
9a05b3597e Fixed test for default flash port. 2011-09-03 12:34:36 -07:00
Guillermo Rauch
41f38b60e8 Added parser test for decoding newline. 2011-09-03 12:23:44 -07:00
Guillermo Rauch
a9bbc38919 Fixed \n parsing for non-JSON packets (fixes #479). 2011-09-03 12:14:07 -07:00
Guillermo Rauch
e282ab0e63 Fixed transport message packet logging.
Fixed style.
2011-09-03 12:13:50 -07:00
Guillermo Rauch
546d5203d4 Added test case for #476 to prevent regressions. 2011-09-03 10:49:08 -07:00
Guillermo Rauch
69941e602b Fixed emission of error event resulting in an uncaught exception if unhandled (fixes #476). 2011-09-03 10:48:31 -07:00
Guillermo Rauch
7ac9c2e888 Fixed style 2011-09-03 10:48:23 -07:00
Guillermo Rauch
fa1f50d173 Fixed; allow for falsy values as the configuration value of log level (fixes #491). 2011-09-03 10:29:51 -07:00
Guillermo Rauch
20ddd5f11a Merge branch 'master' of github.com:LearnBoost/socket.io 2011-09-03 10:19:17 -07:00
Guillermo Rauch
e1891fd615 Fixed repository URI in package.json. Fixes #504. 2011-09-03 10:18:52 -07:00
Guillermo Rauch
4d66f78ca2 Merge pull request #502 from einaros/master
Correction on previous pull req, which left out status code
2011-09-01 12:12:32 -07:00
einaros
6db6db41a2 corrected passing of status code for handshake error 2011-08-31 19:55:28 +02:00
Guillermo Rauch
713baa40e1 Merge pull request #455 from 3rd-Eden/update/package
Added socket.io-flashsocket default port
2011-08-31 09:32:16 -07:00
Guillermo Rauch
7c196f5b32 Merge pull request #501 from einaros/master
Fixes issue commented on in #377
2011-08-31 08:50:44 -07:00
einaros
bd360a15ef added text/plain content-type to handshake responses 2011-08-31 14:48:43 +02:00
einaros
ae7f25332a switched \u**** to \x** for single byte writes, as the former doesn't really make any sense 2011-08-30 11:17:32 +02:00
einaros
63fc15d276 style changes 2011-08-30 11:03:50 +02:00
Arnout Kazemier
00b75759f1 Added socket.io-flashsocket default port 2011-08-09 19:33:27 +02:00
13 changed files with 88 additions and 20 deletions

View File

@@ -1,4 +1,18 @@
0.8.3 / 2011-09-03
==================
* Fixed `\n` parsing for non-JSON packets (fixes #479).
* Fixed parsing of certain unicode characters (fixes #451).
* Fixed transport message packet logging.
* Fixed emission of `error` event resulting in an uncaught exception if unhandled (fixes #476).
* Fixed; allow for falsy values as the configuration value of `log level` (fixes #491).
* Fixed repository URI in `package.json`. Fixes #504.
* Added text/plain content-type to handshake responses [einaros]
* Improved single byte writes [einaros]
* Updated socket.io-flashsocket default port from 843 to 10843 [3rd-Eden]
* Updated client.
0.8.2 / 2011-08-29
==================

View File

@@ -71,7 +71,7 @@ function Manager (server, options) {
, 'heartbeat interval': 20
, 'polling duration': 20
, 'flash policy server': true
, 'flash policy port': 843
, 'flash policy port': 10843
, 'destroy upgrade': true
, 'browser client': true
, 'browser client minification': false
@@ -141,7 +141,7 @@ Manager.prototype.__defineGetter__('log', function () {
if (this.disabled('log')) return;
var logger = this.get('logger');
logger.level = this.get('log level');
logger.level = this.get('log level') || -1;
return logger;
});
@@ -775,7 +775,7 @@ Manager.prototype.handleHandshake = function (data, req, res) {
res.writeHead(200, { 'Content-Type': 'application/javascript' });
res.end('io.j[' + data.query.jsonp + '](new Error("' + message + '"));');
} else {
res.writeHead(status);
res.writeHead(status, { 'Content-Type': 'text/plain' });
res.end(message);
}
};
@@ -808,7 +808,7 @@ Manager.prototype.handleHandshake = function (data, req, res) {
hs = 'io.j[' + data.query.jsonp + '](' + JSON.stringify(hs) + ');';
res.writeHead(200, { 'Content-Type': 'application/javascript' });
} else {
res.writeHead(200);
res.writeHead(200, { 'Content-Type': 'text/plain' });
}
res.end(hs);

View File

@@ -324,8 +324,9 @@ SocketNamespace.prototype.handlePacket = function (sessid, packet) {
case 'event':
var params = [packet.name].concat(packet.args);
if (dataAck)
if (dataAck) {
params.push(ack);
}
socket.$emit.apply(socket, params);
break;

View File

@@ -138,7 +138,7 @@ exports.encodePayload = function (packets) {
* @api private
*/
var regexp = /^([^:]+):([0-9]+)?(\+)?:([^:]+)?:?(.*)?$/;
var regexp = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/;
exports.decodePacket = function (data) {
var pieces = data.match(regexp);

View File

@@ -15,7 +15,7 @@ var client = require('socket.io-client');
* Version.
*/
exports.version = '0.8.2';
exports.version = '0.8.4';
/**
* Supported protocol version.

View File

@@ -11,7 +11,7 @@
var parser = require('./parser')
, util = require('./util')
, EventEmitter = process.EventEmitter;
, EventEmitter = process.EventEmitter
/**
* Export the constructor.
@@ -19,6 +19,12 @@ var parser = require('./parser')
exports = module.exports = Socket;
/**
* Default error event listener to prevent uncaught exceptions.
*/
var defaultError = function () {};
/**
* Socket constructor.
*
@@ -39,6 +45,7 @@ function Socket (manager, id, nsp, readable) {
this.setFlags();
this.readable = readable;
this.store = this.manager.store.client(this.id);
this.on('error', defaultError);
};
/**
@@ -160,7 +167,7 @@ Socket.prototype.join = function (name, fn) {
};
/**
* Joins a user to a room.
* Un-joins a user from a room.
*
* @api public
*/

View File

@@ -56,7 +56,7 @@ HTTPTransport.prototype.handleRequest = function (req) {
req.on('end', function () {
res.writeHead(200, headers);
res.end('1');
self.onData(self.postEncoded ? qs.parse(buffer).d : buffer);
});
@@ -83,9 +83,9 @@ HTTPTransport.prototype.handleRequest = function (req) {
HTTPTransport.prototype.onData = function (data) {
var messages = parser.decodePayload(data);
this.log.debug(this.name + ' received data packet', data);
for (var i = 0, l = messages.length; i < l; i++) {
this.log.debug(this.name + ' received data packet', data);
this.onMessage(messages[i]);
}
};

View File

@@ -176,9 +176,9 @@ WebSocket.prototype.write = function (data) {
var length = Buffer.byteLength(data)
, buffer = new Buffer(2 + length);
buffer.write('\u0000', 'binary');
buffer.write('\x00', 'binary');
buffer.write(data, 1, 'utf8');
buffer.write('\uffff', 1 + length, 'binary');
buffer.write('\xff', 1 + length, 'binary');
try {
if (this.socket.write(buffer)) {

View File

@@ -139,9 +139,9 @@ WebSocket.prototype.write = function (data) {
*/
WebSocket.prototype.frame = function (opcode, str) {
var dataBuffer = new Buffer(str);
var dataLength = dataBuffer.length;
var startOffset = 2
var dataBuffer = new Buffer(str)
, dataLength = dataBuffer.length
, startOffset = 2
, secondByte = dataLength;
if (dataLength > 65536) {
startOffset = 10;

View File

@@ -1,6 +1,6 @@
{
"name": "socket.io"
, "version": "0.8.2"
, "version": "0.8.4"
, "description": "Real-time apps made cross-browser & easy with a WebSocket-like API"
, "homepage": "http://socket.io"
, "keywords": ["websocket", "socket", "realtime", "socket.io", "comet", "ajax"]
@@ -13,10 +13,10 @@
]
, "repository":{
"type": "git"
, "url": "https://github.com/LearnBoost/Socket.IO-node.git"
, "url": "https://github.com/LearnBoost/socket.io.git"
}
, "dependencies": {
"socket.io-client": "0.8.2"
"socket.io-client": "0.8.4"
, "policyfile": "0.0.4"
, "redis": "0.6.6"
}

View File

@@ -343,6 +343,14 @@ module.exports = {
parser.encodePacket({ type: 'message', data: '5', endpoint: '' })
, parser.encodePacket({ type: 'message', data: '53d', endpoint: '' })
]).should.eql('\ufffd5\ufffd3:::5\ufffd7\ufffd3:::53d')
},
'test decoding newline': function () {
parser.decodePacket('3:::\n').should.eql({
type: 'message'
, endpoint: ''
, data: '\n'
});
}
};

View File

@@ -77,7 +77,7 @@ module.exports = {
var io = sio.listen(http.createServer())
, port = ++ports;
io.get('flash policy port').should.eql(843);
io.get('flash policy port').should.eql(10843);
io.set('flash policy port', port);
io.get('flash policy port').should.eql(port);

View File

@@ -950,6 +950,44 @@ module.exports = {
});
},
'test that emitting an error event doesnt throw': function (done) {
var cl = client(++ports)
, io = create(cl)
io.configure(function () {
io.set('polling duration', .05);
io.set('close timeout', .05);
});
io.sockets.on('connection', function (socket) {
socket.on('disconnect', function () {
cl.end();
io.server.close();
done();
});
});
cl.handshake(function (sid) {
cl.get('/socket.io/{protocol}/xhr-polling/' + sid, function (res, msgs) {
res.statusCode.should.equal(200);
msgs.should.have.length(1);
msgs[0].should.eql({ type: 'noop', endpoint: '' });
cl.post(
'/socket.io/{protocol}/xhr-polling/' + sid
, parser.encodePacket({
type: 'event'
, name: 'error'
})
, function (res, data) {
res.statusCode.should.eql(200);
data.should.equal('1');
}
);
});
});
},
'test emitting an event to the server with data': function (done) {
var cl = client(++ports)
, io = create(cl)