|
|
@@ -0,0 +1,41 @@
|
|
|
+redis = require "redis-sharelatex"
|
|
|
+rclient1 = redis.createClient(cluster: [{
|
|
|
+ port: "7000"
|
|
|
+ host: "localhost"
|
|
|
+}])
|
|
|
+
|
|
|
+rclient2 = redis.createClient(cluster: [{
|
|
|
+ port: "7000"
|
|
|
+ host: "localhost"
|
|
|
+}])
|
|
|
+
|
|
|
+counter = 0
|
|
|
+sendPing = (cb = () ->) ->
|
|
|
+ rclient1.rpush "test-blpop", counter, (error) ->
|
|
|
+ console.error "[SENDING ERROR]", error.message if error?
|
|
|
+ if !error?
|
|
|
+ counter += 1
|
|
|
+ cb()
|
|
|
+
|
|
|
+previous = null
|
|
|
+listenForPing = (cb) ->
|
|
|
+ rclient2.blpop "test-blpop", 200, (error, result) ->
|
|
|
+ return cb(error) if error?
|
|
|
+ [key, value] = result
|
|
|
+ value = parseInt(value, 10)
|
|
|
+ if value % 10 == 0
|
|
|
+ console.log "."
|
|
|
+ if previous? and value != previous + 1
|
|
|
+ error = new Error("Counter not in order. Got #{value}, expected #{previous + 1}")
|
|
|
+ previous = value
|
|
|
+ return cb(error, value)
|
|
|
+
|
|
|
+PING_DELAY = 100
|
|
|
+do sendPings = () ->
|
|
|
+ sendPing () ->
|
|
|
+ setTimeout sendPings, PING_DELAY
|
|
|
+
|
|
|
+do listenInBackground = (cb = () ->) ->
|
|
|
+ listenForPing (error, value) ->
|
|
|
+ console.error "[RECEIVING ERROR]", error.message if error
|
|
|
+ setTimeout listenInBackground
|