websocket.mock.coffee 892 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. class WebSocketMock
  2. constructor: (@url) ->
  3. @onclose = ->
  4. @onopen = ->
  5. @onerror = ->
  6. @onmessage = ->
  7. @readyState = 0
  8. @bufferedAmount = 0
  9. @extensions = ''
  10. @protocol = ''
  11. setTimeout(@handle_open, 0)
  12. # WebSocket API
  13. close: ->
  14. @handle_close()
  15. @readyState = 2
  16. send: (msg) ->
  17. if @readyState isnt 1 then return false
  18. @handle_send(msg)
  19. return true
  20. # Helpers
  21. _accept: ->
  22. @readyState = 1
  23. @onopen({'type': 'open'})
  24. _shutdown: ->
  25. @readyState = 3
  26. @onclose({'type': 'close'})
  27. _error: ->
  28. @readyState = 3
  29. @onerror({'type': 'error'})
  30. _respond: (data) ->
  31. @onmessage({'type': 'message', 'data': data})
  32. # Handlers
  33. handle_send: (msg) ->
  34. # implement me
  35. handle_close: ->
  36. # implement me
  37. handle_open: ->
  38. # implement me
  39. exports.WebSocketMock = WebSocketMock