mirror of
https://github.com/socketio/socket.io.git
synced 2026-01-11 16:08:24 -05:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b3fc530abe | ||
|
|
d0dfa54dcb | ||
|
|
198b836759 | ||
|
|
a75f46f06f | ||
|
|
2a91fd57c7 | ||
|
|
fe891293b2 | ||
|
|
6e450f75b4 | ||
|
|
22c985cae6 | ||
|
|
fea3d79a2c | ||
|
|
d3dde130b7 | ||
|
|
899de7f873 | ||
|
|
580100d491 | ||
|
|
acb9cb421d | ||
|
|
abe2394a24 | ||
|
|
7012ba6c64 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -9,3 +9,4 @@ lib-cov
|
||||
benchmarks/*.png
|
||||
node_modules
|
||||
coverage
|
||||
.idea
|
||||
11
History.md
11
History.md
@@ -1,4 +1,14 @@
|
||||
|
||||
1.4.5 / 2016-01-26
|
||||
==================
|
||||
|
||||
* fix closing the underlying `http.Server`
|
||||
|
||||
1.4.4 / 2016-01-10
|
||||
==================
|
||||
|
||||
* package: bump `engine.io`
|
||||
|
||||
1.4.3 / 2016-01-08
|
||||
==================
|
||||
|
||||
@@ -41,6 +51,7 @@
|
||||
* package: bump `has-binary` to work with all objects (fixes #1955)
|
||||
* fix origin verification default https port [evanlucas]
|
||||
* support compression [nkzawa]
|
||||
* changed type of `Client#sockets`, `Namespace#sockets` and `Socket#rooms` to maps (instead of arrays)
|
||||
|
||||
1.3.7 / 2015-09-21
|
||||
==================
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
# socket.io
|
||||
|
||||
[](https://travis-ci.org/socketio/socket.io)
|
||||
[](https://david-dm.org/socketio/socket.io)
|
||||
[](https://david-dm.org/socketio/socket.io#info=devDependencies)
|
||||

|
||||

|
||||
[](http://slack.socket.io)
|
||||
@@ -299,9 +301,10 @@ server.listen(3000);
|
||||
clients. A `Socket` belongs to a certain `Namespace` (by default `/`)
|
||||
and uses an underlying `Client` to communicate.
|
||||
|
||||
### Socket#rooms:Array
|
||||
### Socket#rooms:Object
|
||||
|
||||
A list of strings identifying the rooms this socket is in.
|
||||
A hash of strings identifying the rooms this socket is in, indexed by
|
||||
room name.
|
||||
|
||||
### Socket#client:Client
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ module.exports = Client;
|
||||
* Client constructor.
|
||||
*
|
||||
* @param {Server} server instance
|
||||
* @param {Socket} connection
|
||||
* @param {Socket} conn
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -54,7 +54,7 @@ Client.prototype.setup = function(){
|
||||
/**
|
||||
* Connects a client to a namespace.
|
||||
*
|
||||
* @param {String} namespace name
|
||||
* @param {String} name namespace
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -133,7 +133,7 @@ Client.prototype.close = function(){
|
||||
* Writes a packet to the transport.
|
||||
*
|
||||
* @param {Object} packet object
|
||||
* @param {Object} options
|
||||
* @param {Object} opts
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -200,7 +200,7 @@ Client.prototype.ondecoded = function(packet) {
|
||||
/**
|
||||
* Handles an error.
|
||||
*
|
||||
* @param {Objcet} error object
|
||||
* @param {Object} err object
|
||||
* @api private
|
||||
*/
|
||||
|
||||
|
||||
27
lib/index.js
27
lib/index.js
@@ -5,7 +5,6 @@
|
||||
|
||||
var http = require('http');
|
||||
var read = require('fs').readFileSync;
|
||||
var parse = require('url').parse;
|
||||
var engine = require('engine.io');
|
||||
var client = require('socket.io-client');
|
||||
var clientVersion = require('socket.io-client/package').version;
|
||||
@@ -30,8 +29,8 @@ var clientSource = read(require.resolve('socket.io-client/socket.io.js'), 'utf-8
|
||||
/**
|
||||
* Server constructor.
|
||||
*
|
||||
* @param {http.Server|Number|Object} http server, port or options
|
||||
* @param {Object} options
|
||||
* @param {http.Server|Number|Object} srv http server, port or options
|
||||
* @param {Object} opts
|
||||
* @api public
|
||||
*/
|
||||
|
||||
@@ -54,8 +53,8 @@ function Server(srv, opts){
|
||||
/**
|
||||
* Server request verification function, that checks for allowed origins
|
||||
*
|
||||
* @param {http.IncomingMessage} request
|
||||
* @param {Function} callback to be called with the result: `fn(err, success)`
|
||||
* @param {http.IncomingMessage} req request
|
||||
* @param {Function} fn callback to be called with the result: `fn(err, success)`
|
||||
*/
|
||||
|
||||
Server.prototype.checkRequest = function(req, fn) {
|
||||
@@ -87,7 +86,7 @@ Server.prototype.checkRequest = function(req, fn) {
|
||||
/**
|
||||
* Sets/gets whether client code is being served.
|
||||
*
|
||||
* @param {Boolean} whether to serve client code
|
||||
* @param {Boolean} v whether to serve client code
|
||||
* @return {Server|Boolean} self when setting or value when getting
|
||||
* @api public
|
||||
*/
|
||||
@@ -140,7 +139,7 @@ Server.prototype.set = function(key, val){
|
||||
/**
|
||||
* Sets the client serving path.
|
||||
*
|
||||
* @param {String} pathname
|
||||
* @param {String} v pathname
|
||||
* @return {Server|String} self when setting or value when getting
|
||||
* @api public
|
||||
*/
|
||||
@@ -154,7 +153,7 @@ Server.prototype.path = function(v){
|
||||
/**
|
||||
* Sets the adapter for rooms.
|
||||
*
|
||||
* @param {Adapter} pathname
|
||||
* @param {Adapter} v pathname
|
||||
* @return {Server|Adapter} self when setting or value when getting
|
||||
* @api public
|
||||
*/
|
||||
@@ -173,7 +172,7 @@ Server.prototype.adapter = function(v){
|
||||
/**
|
||||
* Sets the allowed origins for requests.
|
||||
*
|
||||
* @param {String} origins
|
||||
* @param {String} v origins
|
||||
* @return {Server|Adapter} self when setting or value when getting
|
||||
* @api public
|
||||
*/
|
||||
@@ -243,7 +242,7 @@ Server.prototype.attach = function(srv, opts){
|
||||
/**
|
||||
* Attaches the static file serving.
|
||||
*
|
||||
* @param {Function|http.Server} http server
|
||||
* @param {Function|http.Server} srv http server
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -293,7 +292,7 @@ Server.prototype.serve = function(req, res){
|
||||
/**
|
||||
* Binds socket.io to an engine.io instance.
|
||||
*
|
||||
* @param {engine.Server} engine.io (or compatible) server
|
||||
* @param {engine.Server} engine engine.io (or compatible) server
|
||||
* @return {Server} self
|
||||
* @api public
|
||||
*/
|
||||
@@ -307,7 +306,7 @@ Server.prototype.bind = function(engine){
|
||||
/**
|
||||
* Called with each incoming transport connection.
|
||||
*
|
||||
* @param {engine.Socket} socket
|
||||
* @param {engine.Socket} conn
|
||||
* @return {Server} self
|
||||
* @api public
|
||||
*/
|
||||
@@ -322,8 +321,8 @@ Server.prototype.onconnection = function(conn){
|
||||
/**
|
||||
* Looks up a namespace.
|
||||
*
|
||||
* @param {String} nsp name
|
||||
* @param {Function} optional, nsp `connection` ev handler
|
||||
* @param {String} name nsp name
|
||||
* @param {Function} fn optional, nsp `connection` ev handler
|
||||
* @api public
|
||||
*/
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@ Namespace.prototype.use = function(fn){
|
||||
* Executes the middleware for an incoming client.
|
||||
*
|
||||
* @param {Socket} socket that will get added
|
||||
* @param {Function} last fn call in the middleware
|
||||
* @param {Function} fn last fn call in the middleware
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -260,7 +260,7 @@ Namespace.prototype.clients = function(fn){
|
||||
/**
|
||||
* Sets the compress flag.
|
||||
*
|
||||
* @param {Boolean} if `true`, compresses the sending data
|
||||
* @param {Boolean} compress if `true`, compresses the sending data
|
||||
* @return {Socket} self
|
||||
* @api public
|
||||
*/
|
||||
|
||||
@@ -88,7 +88,7 @@ flags.forEach(function(flag){
|
||||
});
|
||||
|
||||
/**
|
||||
* `request` engine.io shorcut.
|
||||
* `request` engine.io shortcut.
|
||||
*
|
||||
* @api public
|
||||
*/
|
||||
@@ -199,7 +199,7 @@ Socket.prototype.write = function(){
|
||||
* Writes a packet.
|
||||
*
|
||||
* @param {Object} packet object
|
||||
* @param {Object} options
|
||||
* @param {Object} opts options
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -214,7 +214,7 @@ Socket.prototype.packet = function(packet, opts){
|
||||
* Joins a room.
|
||||
*
|
||||
* @param {String} room
|
||||
* @param {Function} optional, callback
|
||||
* @param {Function} fn optional, callback
|
||||
* @return {Socket} self
|
||||
* @api private
|
||||
*/
|
||||
@@ -239,7 +239,7 @@ Socket.prototype.join = function(room, fn){
|
||||
* Leaves a room.
|
||||
*
|
||||
* @param {String} room
|
||||
* @param {Function} optional, callback
|
||||
* @param {Function} fn optional, callback
|
||||
* @return {Socket} self
|
||||
* @api private
|
||||
*/
|
||||
@@ -338,7 +338,7 @@ Socket.prototype.onevent = function(packet){
|
||||
/**
|
||||
* Produces an ack callback to emit with an event.
|
||||
*
|
||||
* @param {Number} packet id
|
||||
* @param {Number} id packet id
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -409,7 +409,7 @@ Socket.prototype.onerror = function(err){
|
||||
* Called upon closing. Called by `Client`.
|
||||
*
|
||||
* @param {String} reason
|
||||
* @param {Error} optional error object
|
||||
* @throw {Error} optional error object
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -428,7 +428,7 @@ Socket.prototype.onclose = function(reason){
|
||||
/**
|
||||
* Produces an `error` packet.
|
||||
*
|
||||
* @param {Object} error object
|
||||
* @param {Object} err error object
|
||||
* @api private
|
||||
*/
|
||||
|
||||
@@ -439,7 +439,7 @@ Socket.prototype.error = function(err){
|
||||
/**
|
||||
* Disconnects this client.
|
||||
*
|
||||
* @param {Boolean} if `true`, closes the underlying connection
|
||||
* @param {Boolean} close if `true`, closes the underlying connection
|
||||
* @return {Socket} self
|
||||
* @api public
|
||||
*/
|
||||
@@ -458,7 +458,7 @@ Socket.prototype.disconnect = function(close){
|
||||
/**
|
||||
* Sets the compress flag.
|
||||
*
|
||||
* @param {Boolean} if `true`, compresses the sending data
|
||||
* @param {Boolean} compress if `true`, compresses the sending data
|
||||
* @return {Socket} self
|
||||
* @api public
|
||||
*/
|
||||
|
||||
14
package.json
14
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "socket.io",
|
||||
"version": "1.4.3",
|
||||
"version": "1.4.5",
|
||||
"description": "node.js realtime framework server",
|
||||
"keywords": [
|
||||
"realtime",
|
||||
@@ -21,20 +21,20 @@
|
||||
"test": "mocha --reporter dot --slow 200ms --bail"
|
||||
},
|
||||
"dependencies": {
|
||||
"engine.io": "1.6.6",
|
||||
"engine.io": "1.6.8",
|
||||
"socket.io-parser": "2.2.6",
|
||||
"socket.io-client": "1.4.3",
|
||||
"socket.io-client": "1.4.5",
|
||||
"socket.io-adapter": "0.4.0",
|
||||
"has-binary": "0.1.7",
|
||||
"debug": "2.2.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"expect.js": "0.3.1",
|
||||
"istanbul": "0.2.3",
|
||||
"istanbul": "0.4.1",
|
||||
"mocha": "2.3.4",
|
||||
"superagent": "0.17.0",
|
||||
"supertest": "0.8.2",
|
||||
"zuul-ngrok": "3.1.0"
|
||||
"superagent": "1.6.1",
|
||||
"supertest": "1.1.0",
|
||||
"zuul-ngrok": "3.2.0"
|
||||
},
|
||||
"contributors": [
|
||||
{
|
||||
|
||||
11
test/fixtures/server-close.js
vendored
Normal file
11
test/fixtures/server-close.js
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
var server = require('http').createServer();
|
||||
var ioc = require('socket.io-client');
|
||||
var io = require('../..')(server);
|
||||
|
||||
var srv = server.listen(function() {
|
||||
var socket = ioc('ws://localhost:' + server.address().port);
|
||||
socket.on('connect', function() {
|
||||
io.close();
|
||||
socket.close();
|
||||
});
|
||||
});
|
||||
@@ -3,6 +3,7 @@ var http = require('http').Server;
|
||||
var io = require('..');
|
||||
var fs = require('fs');
|
||||
var join = require('path').join;
|
||||
var exec = require('child_process').exec;
|
||||
var ioc = require('socket.io-client');
|
||||
var request = require('supertest');
|
||||
var expect = require('expect.js');
|
||||
@@ -412,6 +413,16 @@ describe('socket.io', function(){
|
||||
});
|
||||
});
|
||||
|
||||
describe('graceful close', function(){
|
||||
function fixture(filename) {
|
||||
return process.execPath + ' ' +
|
||||
join(__dirname, 'fixtures', filename);
|
||||
}
|
||||
|
||||
it('should stop socket and timers', function(done){
|
||||
exec(fixture('server-close.js'), done);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('namespaces', function(){
|
||||
|
||||
Reference in New Issue
Block a user