Skip to content
Snippets Groups Projects
  • Ashley Sanders's avatar
    fe804b09
    ARI: Channels added to Stasis application during WebSocket creation ... · fe804b09
    Ashley Sanders authored
    Prior to ASTERISK-24988, the WebSocket handshake was resolved before Stasis
    applications were registered. This was done such that the WebSocket would be
    ready when an application is registered. However, by creating the WebSocket
    first, the client had the ability to make requests for the Stasis application
    it thought had been created with the initial handshake request. The inevitable
    conclusion of this scenario was the cart being put before the horse.
    
    ASTERISK-24988 resolved half of the problem by ensuring that the applications
    were created and registered with Stasis prior to completing the handshake
    with the client. While this meant that Stasis was ready when the client
    received the green-light from Asterisk, it also meant that the WebSocket was
    not yet ready for Stasis to dispatch messages.
    
    This patch introduces a message queuing mechanism for delaying messages from
    Stasis applications while the WebSocket is being constructed. When the ARI
    event processor receives the message from the WebSocket that it is being
    created, the event processor instantiates an event session which contains a
    message queue. It then tries to create and register the requested applications
    with Stasis. Messages that are dispatched from Stasis between this point and
    the point at which the event processor is notified the WebSocket is ready, are
    stashed in the queue. Once the WebSocket has been built, the queue's messages
    are dispatched in the order in which they were originally received and the
    queue is concurrently cleared.
    
    ASTERISK-25181 #close
    Reported By: Matt Jordan
    
    Change-Id: Iafef7b85a2e0bf78c114db4c87ffc3d16d671a17
    fe804b09
    History
    ARI: Channels added to Stasis application during WebSocket creation ...
    Ashley Sanders authored
    Prior to ASTERISK-24988, the WebSocket handshake was resolved before Stasis
    applications were registered. This was done such that the WebSocket would be
    ready when an application is registered. However, by creating the WebSocket
    first, the client had the ability to make requests for the Stasis application
    it thought had been created with the initial handshake request. The inevitable
    conclusion of this scenario was the cart being put before the horse.
    
    ASTERISK-24988 resolved half of the problem by ensuring that the applications
    were created and registered with Stasis prior to completing the handshake
    with the client. While this meant that Stasis was ready when the client
    received the green-light from Asterisk, it also meant that the WebSocket was
    not yet ready for Stasis to dispatch messages.
    
    This patch introduces a message queuing mechanism for delaying messages from
    Stasis applications while the WebSocket is being constructed. When the ARI
    event processor receives the message from the WebSocket that it is being
    created, the event processor instantiates an event session which contains a
    message queue. It then tries to create and register the requested applications
    with Stasis. Messages that are dispatched from Stasis between this point and
    the point at which the event processor is notified the WebSocket is ready, are
    stashed in the queue. Once the WebSocket has been built, the queue's messages
    are dispatched in the order in which they were originally received and the
    queue is concurrently cleared.
    
    ASTERISK-25181 #close
    Reported By: Matt Jordan
    
    Change-Id: Iafef7b85a2e0bf78c114db4c87ffc3d16d671a17