@@ -8,7 +8,6 @@ var redis = require('redis').createClient;
8
8
var msgpack = require ( 'notepack.io' ) ;
9
9
var Adapter = require ( 'socket.io-adapter' ) ;
10
10
var debug = require ( 'debug' ) ( 'socket.io-redis' ) ;
11
- var MersenneTwister = require ( 'mersennetwister' ) ;
12
11
var crypto = require ( "crypto" )
13
12
14
13
/**
@@ -86,12 +85,11 @@ function adapter(uri, opts) {
86
85
if ( ! pubs ) pubs = [ createClient ( ) ] ;
87
86
if ( ! subs ) subs = [ createClient ( ) ] ;
88
87
88
+ var pubCount = 0
89
+
89
90
// this server's key
90
91
var uid = uid2 ( 6 ) ;
91
92
92
- var randNumberSeed = parseInt ( crypto . randomBytes ( 4 ) . toString ( 'hex' ) , 16 ) ;
93
- var mt = new MersenneTwister ( randNumberSeed ) ;
94
-
95
93
function subClientFunction ( clients ) {
96
94
var custom = { }
97
95
var commonFunctions = [ 'quit' , 'on' , 'subscribe' , 'psubscribe' ]
@@ -110,7 +108,8 @@ function adapter(uri, opts) {
110
108
var customFunctions = [ 'publish' ]
111
109
customFunctions . map ( fn => {
112
110
custom [ fn ] = function ( ...args ) {
113
- var randomNumber = Math . floor ( mt . rndHiRes ( ) * clients . length ) ;
111
+ var randomNumber = pubCount % clients . length ;
112
+ pubCount = pubCount > 10000000 ? 0 : ( pubCount + 1 )
114
113
return pubs [ randomNumber ] [ fn ] ( ...args )
115
114
} ;
116
115
} )
@@ -179,10 +178,11 @@ function adapter(uri, opts) {
179
178
pub . on ( 'error' , onError ) ;
180
179
} ) ;
181
180
182
- this . mt = mt ;
181
+ this . pubCount = 0
183
182
184
183
this . getPub = function ( ) {
185
- var randomNumber = Math . floor ( this . mt . rndHiRes ( ) * pubs . length ) ;
184
+ var randomNumber = this . pubCount % pubs . length ;
185
+ this . pubCount = this . pubCount > 10000000 ? 0 : ( this . pubCount + 1 )
186
186
debug ( `publishing to pub ${ randomNumber } ` )
187
187
return pubs [ randomNumber ]
188
188
}
0 commit comments