提交 5541b8fc 编写于 作者: J Javan Makhmali

Update connection API with #open, #close, #reopen

上级 315c0fbf
......@@ -3,39 +3,41 @@
class Cable.Connection
constructor: (@consumer) ->
new Cable.ConnectionMonitor @consumer
@connect()
@open()
send: (data) ->
if @isConnected()
if @isOpen()
@websocket.send(JSON.stringify(data))
true
else
false
connect: ->
@removeWebsocket()
@createWebSocket()
createWebSocket: ->
open: ->
@websocket = new WebSocket(@consumer.url)
@websocket.onmessage = @onMessage
@websocket.onopen = @onConnect
@websocket.onopen = @onOpen
@websocket.onclose = @onClose
@websocket.onerror = @onError
@websocket
removeWebsocket: ->
if @websocket?
@websocket.onclose = -> # no-op
@websocket.onerror = -> # no-op
@websocket.close()
@websocket = null
close: ->
@websocket.close() unless @isClosed()
reopen: ->
@close()
@open()
isOpen: ->
@websocket.readyState is WebSocket.OPEN
isClosed: ->
@websocket.readyState in [ WebSocket.CLOSED, WebSocket.CLOSING ]
onMessage: (message) =>
data = JSON.parse message.data
@consumer.subscribers.notify(data.identifier, "received", data.message)
onConnect: =>
onOpen: =>
@consumer.subscribers.reload()
onClose: =>
......@@ -43,10 +45,9 @@ class Cable.Connection
onError: =>
@disconnect()
isConnected: ->
@websocket?.readyState is 1
@websocket.onclose = -> # no-op
@websocket.onerror = -> # no-op
try @close()
disconnect: ->
@consumer.subscribers.notifyAll("disconnected")
@removeWebsocket()
......@@ -35,7 +35,7 @@ class Cable.ConnectionMonitor
reconnect: ->
console.log "Ping took too long to arrive. Reconnecting.."
@connectionAttempts += 1
@consumer.connection.connect()
@consumer.connection.reopen()
now = ->
new Date().getTime()
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册