.. role:: ts-api-decorator

#############
ServerSession
#############

.. js:module:: cee.vs
   :noindex:

.. container:: ts-api-section

   .. js:class:: ServerSession

      A ServerSession object is the first object that needs to be initialized when working with the ``StreamModel``. 
      It manages the communication with the Visualization Streamer (VizStreamer) service. 

      The ``getAvailableStreams_async`` method is used to get the information about all available streams.
      These streams can be subsequently used to create ``StreamModel`` instance(s) with the method ``createStreamModel``. 

      **Example:** 
       Create a ServerSession and a StreamModel from the first available stream.


      .. code-block:: typescript

         // Connect to the server session at the given url. 
         const serverSession = await cee.vs.ServerSession.createInstance_async("http://localhost:8091");
         // Get the available streams
         const streams = await serverSession.getAvailableStreams_async();

         if (streams[0]) {
             const streamId = streams[0].streamId;
             const streamModel = serverSession.createStreamModel(streamId);

             // Add the model to the cee.View
             this.view.addModel(streamModel);
             // Start the streaming if not already started.
             if (!streamModel.isStreamingActive()) {
                 await streamModel.startStreaming_async();
             }
         }




.. container:: api-index-section

   .. rubric:: Methods

   .. rst-class:: api-index-list-item api-kind-method api-parent-kind-class

   * :js:meth:`~cee.vs.ServerSession.createStreamModel`
   * :js:meth:`~cee.vs.ServerSession.destroySession`
   * :js:meth:`~cee.vs.ServerSession.getAvailableStreams_async`
   * :js:meth:`~cee.vs.ServerSession.getServerUrl`
   * :js:meth:`~cee.vs.ServerSession.createInstance_async`





------------

Methods
=======

.. rst-class:: ts-api-section

createStreamModel
-----------------

.. js:method:: ServerSession.createStreamModel( streamId)

   :param streamId: None
   :type streamId: string


   Creates a new ``StreamModel`` for the given stream id. 
   Streaming of data into the new model is not started by default, but should be initiated
   by calling ``StreamModel.startStreaming_async``.


   :rtype: StreamModel

.. rst-class:: ts-api-section

destroySession
--------------

.. js:method:: ServerSession.destroySession()



   Destroys this ServerSession instance.

   This will detach all StreamModels from the session and free all resources associated with the session.
   After calling this method, the ServerSession instance should not be used anymore.


   :rtype: void

.. rst-class:: ts-api-section

getAvailableStreams_async
-------------------------

.. js:method:: ServerSession.getAvailableStreams_async()



   Gets the information about all the streams available in the VizStreamer Service. 
   Returns a ``StreamInfo`` array on success, otherwise throws an error (e.g. connection problems).


   :rtype: Promise <[StreamInfo]>

.. rst-class:: ts-api-section

getServerUrl
------------

.. js:method:: ServerSession.getServerUrl()



   Gets the url of the HTTP stream server that this ServerSession is connected to.


   :rtype: string

.. rst-class:: ts-api-section

:ts-api-decorator:`static` createInstance_async
-----------------------------------------------

.. js:method:: ServerSession.createInstance_async( serverUrl)

   :param serverUrl: The url on which the VizStreamer'sHTTP stream server resides, e.g. ``http://localhost:8091``
   :type serverUrl: string


   Creates a new ServerSession instance.


   :rtype: Promise <ServerSession>

