1
0
mirror of https://github.com/redis/node-redis.git synced 2025-08-06 02:15:48 +03:00

Add disable_resubscribingg option. Fixes #472

This commit is contained in:
Ruben Bridgewater
2015-10-02 23:28:59 +02:00
parent 088b3f6996
commit e8d9858e29
4 changed files with 69 additions and 8 deletions

View File

@@ -203,6 +203,7 @@ That way the default is to try reconnecting until 24h passed.
limits total amount of connection tries. Setting this to 1 will prevent any reconnect tries.
* `auth_pass` *null*; If set, client will run redis auth command on connect.
* `family` *IPv4*; You can force using IPv6 if you set the family to 'IPv6'. See Node.js [net](https://nodejs.org/api/net.html) or [dns](https://nodejs.org/api/dns.html) modules how to use the family type.
* `disable_resubscribing`: *false*; If set to `true`, a client won't resubscribe after disconnecting
```js
var redis = require("redis"),

View File

@@ -1,6 +1,16 @@
Changelog
=========
## v.2.x.x - xx, 2015
Features
- Added disable_resubscribing option to prevent a client from resubscribing after reconnecting (@BridgeAR)
Bugfixes
-
## v2.1.0 - Oct 02, 2015
Features:
@@ -14,7 +24,7 @@ Bugfixes:
- Fix argument mutation while using the array notation with the multi constructor (@BridgeAR)
- Fix multi.hmset key not being type converted if used with an object and key not being a string (@BridgeAR)
- Fix parser errors not being catched properly (@BridgeAR)
- Fix a crash that could occur if a redis server does return the info command as usual #541 (@BridgeAR)
- Fix a crash that could occur if a redis server does not return the info command as usual #541 (@BridgeAR)
- Explicitly passing undefined as a callback statement will work again. E.g. client.publish('channel', 'message', undefined); (@BridgeAR)
## v2.0.1 - Sep 24, 2015
@@ -27,7 +37,7 @@ Bugfixes:
This is the biggest release that node_redis had since it was released in 2010. A long list of outstanding bugs has been fixed, so we are very happy to present you redis 2.0 and we highly recommend updating as soon as possible.
#What's new in 2.0
# What's new in 2.0
- Implemented a "connection is broken" mode if no connection could be established
- node_redis no longer throws under any circumstances, preventing it from terminating applications.

View File

@@ -318,6 +318,9 @@ RedisClient.prototype.on_ready = function () {
self.emit("ready");
}
};
if (this.options.disable_resubscribing) {
return;
}
Object.keys(this.subscription_set).forEach(function (key) {
var space_index = key.indexOf(" ");
var parts = [key.slice(0, space_index), key.slice(space_index + 1)];

View File

@@ -26,20 +26,67 @@ describe("publish/subscribe", function () {
pub.once("connect", function () {
pub.flushdb(function () {
pubConnected = true;
if (subConnected) {
done();
}
});
});
sub.once("error", done);
sub.once("connect", function () {
subConnected = true;
if (pubConnected) {
done();
}
});
});
describe('disable resubscribe', function () {
beforeEach(function (done) {
var pubConnected;
var subConnected;
pub = redis.createClient();
sub = redis.createClient({
disable_resubscribing: false
});
pub.once("error", done);
pub.once("connect", function () {
pubConnected = true;
if (subConnected) {
done();
}
});
sub.once("error", done);
sub.once("connect", function () {
subConnected = true;
if (pubConnected) {
done();
}
});
});
var id = setInterval(function () {
if (pubConnected && subConnected) {
clearInterval(id);
return done();
}
}, 50);
it('does not fire subscribe events after reconnecting', function (done) {
var a = false;
sub.on("subscribe", function (chnl, count) {
if (chnl === channel2) {
if (a) {
return done(new Error('Test failed'));
}
assert.equal(2, count);
sub.stream.destroy();
}
});
sub.on('reconnecting', function() {
a = true;
});
sub.subscribe(channel, channel2);
setTimeout(done, 250);
});
});
describe('subscribe', function () {