Revision e0b22e579300ba3c727caf112b2c7ec53578d3f5 (click the page title to view the current version)

Behavioral/WebSocketProtocol

Simplified Web Socket Protocol

enum Request = open | close

abstract WebSocket
    xor request -> Request ?
        success
        failure
    xor states
        initial ready
            [ initially no request ]
            [ request=open -[request.success]-> opened ]
            [ request=open -[request.failure]-> failed ]
        opened 
            [ initially no request ]
            [ request=close -[request.success]->  closed ]
            [ request=close -[request.failure]->  failed ]
        closed --> closed
            [ no request ]
        failed --> failed
            [ no request ]

Example scenarios

  1. Web socket successfully opened and closed
webSocketOpenedClosed : WebSocket
    [ ready --> request=open && request.success --> opened -->> request=close && request.success --> closed --> closed ]
WebSocket1
  states
    ready
WebSocket2
  request->open
    success
  states
    ready
WebSocket3
  states
    opened
WebSocket4
  request->close
    success
  states
    opened
WebSocket5
  states
    closed
WebSocket6
  states
    closed
  1. Web socket successfully opened but failed to be closed
webSocketOpenedFailed : WebSocket
    [ ready --> request=open && request.success --> opened -->> request=close && request.failure --> failed --> failed ]
<<<<<<< edited
WebSocket7
=======
WebSocket6
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  states
    ready
<<<<<<< edited
WebSocket8
=======
WebSocket7
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  request->open
    success
  states
    ready
<<<<<<< edited
WebSocket9
=======
WebSocket8
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  states
    opened
<<<<<<< edited
WebSocket10
=======
WebSocket9
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  request->close
    failed
  states
    opened
<<<<<<< edited
WebSocket11
=======
WebSocket10
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  states
    failed
<<<<<<< edited
WebSocket12
=======
WebSocket11
>>>>>>> ec5473b372ac1209325b03fa234f1fe6f0e7b2fa
  states
    failed
  1. Web socket failed to be opened
webSocketFailed : WebSocket
    [ ready --> request=open && request.failure --> failed --> failed ]
|WebSocket |WebSocket |WebSocket |WebSocket
| |  request->open | |
| |    failure | |
|  ready |  ready |  failed |  failed