Guys,
@yurynix on github has an interesting suggestion regarding
the stuck websocket connections on sockjs-node.
The possible culprit is faye-websocket-node which seems
to be stuck in API.CLOSING state for way too long sometimes.
Take a look at this comment:
https://github.com/sockjs/sockjs-node/issues/99#issuecomment-11084738
Can anyone verify if, and in what circumstances, websocket
connections get stuck in API.CLOSING state on faye-websocket-node
layer?
Can anyone verify if a patch like that to sockjs-node
(setting ack=false) does solve the problem?
$ git diff src/trans-websocket.coffee
diff --git a/src/trans-websocket.coffee b/src/trans-websocket.coffee
index 5c07344..036485c 100644
--- a/src/trans-websocket.coffee
+++ b/src/trans-websocket.coffee
@@ -97,7 +97,7 @@ class WebSocketReceiver extends transport.GenericReceiver
didClose: ->
super
try
- @ws.close()
+ @ws.close(1001, "error", false)
catch x
@ws = null
@connection = null
@@ -136,7 +136,7 @@ class RawWebsocketSessionReceiver extends transport.Session
if @readyState isnt Transport.OPEN
return false
@readyState = Transport.CLOSING
- @ws.close(status, reason)
+ @ws.close(status, reason, false)
return true
didClose: ->
@@ -145,7 +145,7 @@ class RawWebsocketSessionReceiver extends transport.Session
@ws.removeEventListener('message', @_message_cb)
@ws.removeEventListener('close', @_end_cb)
try
- @ws.close()
+ @ws.close(1001, "error", false)
catch x
@ws = null