edu.whs.spin2018.baoapp.service

## Class ClientSocket

- java.lang.Object
- - edu.whs.spin2018.baoapp.service.ClientSocket

-     public class ClientSocket
      extends java.lang.Object

  Ein ClientSocket ist die Client Seite unserer Client-Server-Struktur. Er wird benutzt um die Verbindung zum Server aufzubauen und Informationen als Events auszutauschen.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `EVENT_BENUTZER_TRITT_RAUM_BEI`
    `static java.lang.String` | `EVENT_BENUTZER_VERLAESST_RAUM`
    `static java.lang.String` | `EVENT_LOGIN`
    `static java.lang.String` | `EVENT_NACHRICHT`
    `static java.lang.String` | `EVENT_RAUM_BETRETEN`
    `static java.lang.String` | `EVENT_RAUM_VERLASSEN`
    `static java.lang.String` | `EVENT_VERBINDEN`
    `static java.lang.String` | `EVENT_VERBUNDEN`
    `static java.lang.String` | `EVENT_ZEIGE_BENUTZER_IM_RAUM`
    `static java.lang.String` | `EXTRA_APP`
    `static java.lang.String` | `EXTRA_BENUTZERNAME`
    `static java.lang.String` | `EXTRA_INHALT`
    `static java.lang.String` | `EXTRA_RAUM`
    `static java.lang.String` | `EXTRA_TYPE`
    `static java.lang.String` | `EXTRA_UUID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClientSocket(java.lang.String url)` Erzeugt einen ClientSocket, der eine Verbindung zu einem Server unter der angegebenen URL aufbauen kann.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `entferneListener(java.lang.String event, io.socket.emitter.Emitter.Listener listener)` Entfernt einen registrierten Listener, der auf das angegebene Event hoert.
    `void` | `login(java.lang.String benutzername, java.lang.String uuid, java.lang.String appName, java.lang.String appVersion)` Meldet einen Benutzer am Server an appName und appVersion werden serverseitig verwendet um festzustellen ob der Client kompatibel ist.
    `void` | `raumBetreten(java.lang.String raum)` Betritt einen Raum auf dem Server Andere Raeume werden nicht automatisch verlassen.
    `void` | `raumVerlassen(java.lang.String raum)` Verlaesst einen Raum auf dem Server Nach dem Verlassen koennen keine Broadcasts, die an den Raum gesendet werden, empfangen werden.
    `void` | `sendeBroadcast(java.lang.String inhalt, java.lang.String typ, java.lang.String raum)` Ein Broadcast ist eine Nachricht an alle Benutzer eines Raumes ausser den Sender (siehe sendeNachricht)
    `void` | `sendeNachricht(java.lang.String inhalt, java.lang.String typ, java.lang.String empfaengerUUID)` Sendet eine Nachricht an einen Benutzer Eine Nachricht ist ein JSONObject, dass an genau einen Benutzer des Servers geschickt wird um diesem Benutzer Informationen beliebigen Typs zukommen zu lassen.
    `void` | `setBenutzerBetrittRaumListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, wenn ein Benutzer einen Raum betreten hat.
    `void` | `setBenutzerVerlaesstRaumListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, wenn ein Benutzer einen Raum verlassen hat.
    `void` | `setLoginListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, ob ein Login erfolgreich oder fehlgeschlagen ist.
    `void` | `setNachrichtenListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, wenn eine Nachricht empfangen wurde.
    `void` | `setVerbundenListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, wenn eine Verbindung hergestellt wurde.
    `void` | `setZeigeBenutzerImRaumListener(io.socket.emitter.Emitter.Listener listener)` Setzt einen Listener, der benachrichtigt wird, wenn eine Benutzerliste empfangen wurde.
    `void` | `trennen()` Trennt die Verbindung zum Server.
    `void` | `verbinden()` Baut eine Socketverbindung zu dem Server auf.
    `void` | `zeigeBenutzerImRaum(java.lang.String raum)` Diese Methode sendet ein Event an den Server, das ihn veranlasst eine Liste mit allen Benutzern des angegebenen Raumes zurueckzusenden.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### EVENT_VERBUNDEN

          public static final java.lang.String EVENT_VERBUNDEN

      See Also:
        Constant Field Values

    - #### EVENT_VERBINDEN

          public static final java.lang.String EVENT_VERBINDEN

      See Also:
        Constant Field Values

    - #### EVENT_RAUM_BETRETEN

          public static final java.lang.String EVENT_RAUM_BETRETEN

      See Also:
        Constant Field Values

    - #### EVENT_RAUM_VERLASSEN

          public static final java.lang.String EVENT_RAUM_VERLASSEN

      See Also:
        Constant Field Values

    - #### EVENT_NACHRICHT

          public static final java.lang.String EVENT_NACHRICHT

      See Also:
        Constant Field Values

    - #### EVENT_ZEIGE_BENUTZER_IM_RAUM

          public static final java.lang.String EVENT_ZEIGE_BENUTZER_IM_RAUM

      See Also:
        Constant Field Values

    - #### EVENT_LOGIN

          public static final java.lang.String EVENT_LOGIN

      See Also:
        Constant Field Values

    - #### EVENT_BENUTZER_TRITT_RAUM_BEI

          public static final java.lang.String EVENT_BENUTZER_TRITT_RAUM_BEI

      See Also:
        Constant Field Values

    - #### EVENT_BENUTZER_VERLAESST_RAUM

          public static final java.lang.String EVENT_BENUTZER_VERLAESST_RAUM

      See Also:
        Constant Field Values

    - #### EXTRA_TYPE

          public static final java.lang.String EXTRA_TYPE

      See Also:
        Constant Field Values

    - #### EXTRA_INHALT

          public static final java.lang.String EXTRA_INHALT

      See Also:
        Constant Field Values

    - #### EXTRA_UUID

          public static final java.lang.String EXTRA_UUID

      See Also:
        Constant Field Values

    - #### EXTRA_RAUM

          public static final java.lang.String EXTRA_RAUM

      See Also:
        Constant Field Values

    - #### EXTRA_APP

          public static final java.lang.String EXTRA_APP

      See Also:
        Constant Field Values

    - #### EXTRA_BENUTZERNAME

          public static final java.lang.String EXTRA_BENUTZERNAME

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### ClientSocket

          public ClientSocket(java.lang.String url)
                       throws java.net.URISyntaxException

      Erzeugt einen ClientSocket, der eine Verbindung zu einem Server unter der angegebenen URL aufbauen kann.
      Parameters:
        `url` - URL des Servers
      Throws:
        `java.net.URISyntaxException`

  - ### Method Detail

    - #### verbinden

          public void verbinden()

      Baut eine Socketverbindung zu dem Server auf.

    - #### entferneListener

          public void entferneListener(java.lang.String event,
                                       io.socket.emitter.Emitter.Listener listener)

      Entfernt einen registrierten Listener, der auf das angegebene Event hoert.
      Parameters:
        `event` - - Event auf das der angegebene Listener hoert.
        `listener` - - Listener, der entfernt werden soll

    - #### setVerbundenListener

          public void setVerbundenListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, wenn eine Verbindung hergestellt wurde.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### setZeigeBenutzerImRaumListener

          public void setZeigeBenutzerImRaumListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, wenn eine Benutzerliste empfangen wurde.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### setBenutzerBetrittRaumListener

          public void setBenutzerBetrittRaumListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, wenn ein Benutzer einen Raum betreten hat.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### setBenutzerVerlaesstRaumListener

          public void setBenutzerVerlaesstRaumListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, wenn ein Benutzer einen Raum verlassen hat.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### setNachrichtenListener

          public void setNachrichtenListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, wenn eine Nachricht empfangen wurde.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### setLoginListener

          public void setLoginListener(io.socket.emitter.Emitter.Listener listener)

      Setzt einen Listener, der benachrichtigt wird, ob ein Login erfolgreich oder fehlgeschlagen ist.
      Parameters:
        `listener` - Der Listener, der benachrichtigt wird

    - #### login

          public void login(java.lang.String benutzername,
                            java.lang.String uuid,
                            java.lang.String appName,
                            java.lang.String appVersion)

      Meldet einen Benutzer am Server an appName und appVersion werden serverseitig verwendet um festzustellen ob der Client kompatibel ist.
      Parameters:
        `benutzername` - Waehlbarer Name des Benutzers
        `uuid` - Einzigartige ID des Benutzers (generiert)
        `appName` - Name der App, die sich anmelden will
        `appVersion` - Version der App, die sich anmelden will

    - #### trennen

          public void trennen()

      Trennt die Verbindung zum Server.

    - #### raumBetreten

          public void raumBetreten(java.lang.String raum)

      Betritt einen Raum auf dem Server Andere Raeume werden nicht automatisch verlassen.
      Parameters:
        `raum` - Der Raum, der betreten werden soll.

    - #### raumVerlassen

          public void raumVerlassen(java.lang.String raum)

      Verlaesst einen Raum auf dem Server Nach dem Verlassen koennen keine Broadcasts, die an den Raum gesendet werden, empfangen werden.
      Parameters:
        `raum` - Der Raum, der verlassen wird

    - #### zeigeBenutzerImRaum

          public void zeigeBenutzerImRaum(java.lang.String raum)

      Diese Methode sendet ein Event an den Server, das ihn veranlasst eine Liste mit allen Benutzern des angegebenen Raumes zurueckzusenden.
      Parameters:
        `raum` - Der Raum, dessen Benutzer gesendet werden sollen

    - #### sendeBroadcast

          public void sendeBroadcast(java.lang.String inhalt,
                                     java.lang.String typ,
                                     java.lang.String raum)

      Ein Broadcast ist eine Nachricht an alle Benutzer eines Raumes ausser den Sender (siehe sendeNachricht)
      Parameters:
        `inhalt` - Der Inhalt der Nachricht (z.B. Text, ein Spielzug etc)
        `typ` - Beschreibt die Art der Nachricht
        `raum` - Der Raum, dessen Benutzer die Nachricht erhalten sollen

    - #### sendeNachricht

          public void sendeNachricht(java.lang.String inhalt,
                                     java.lang.String typ,
                                     java.lang.String empfaengerUUID)

      Sendet eine Nachricht an einen Benutzer Eine Nachricht ist ein JSONObject, dass an genau einen Benutzer des Servers geschickt wird um diesem Benutzer Informationen beliebigen Typs zukommen zu lassen.
      Parameters:
        `inhalt` - Der Inhalt der Nachricht (z.B. Text, ein Spielzug etc)
        `typ` - Beschreibt die Art der Nachricht
        `empfaengerUUID` - Die UUID des Empfaengers der Nachricht