Socket in Extrathread | IOS, ObjectiveC

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Socket in Extrathread | IOS, ObjectiveC

    Hallo,
    Mein Socket läuft derzeit (vorübergehend) im ersten ViewController, wo er erstellt wurde. Ich brauche aber in jedem ViewController zugriff auf mein Socket. Ich muss die Daten die ich über die on-Methode vom Server bekomme in fast allen ViewControllern nutzen.
    Ich bin da leider etwas ratlos. Ich kann zwar mein Socket in die nächste Klasse übergeben, aber die On-Methoden müssen ja da sein, wo der Socket erstellt wird.

    Ein Androidentwickler aus meinem Team hat mir jetzt den Tipp gegeben, dass ich den Socket auf einem extrathread laufen lassen muss, der von überall erreichbar ist. Leider konnte er mir aber auch nicht weiterhelfen, da er sich nicht wirklich mit iOSprogrammierung auskennt.

    Ich habe mir auch Central Dispatch queues angeguckt, aber es hieß die werden nur für temporäre Tasks im Hintergrund genutzt und unser Socket muss dauerhaft aktiv sein.

    danke, LG

    Meine Socket library: github.com/MegaBits/SIOSocket
  • Hallo,

    ich würde die Socket Sachen in eine Extra Klasse auslagern, welche im Appdelegate initalisiert wird und on-Methode per Notification verarbeiten. Jeder Viewcontroller meldet sich bei NotificationCenter an. In der Methode viewWillAppear und meldet sich wieder ab wenn ein neuer geladen wird mit der Methode viewWillDisappear. So braucht man nicht an die Viewcontroller weiter geben.
  • gritsch schrieb:

    was willst du denn erreichen? dass zb alle viewcontroller benachrichtigt werden wenn eine antwort angekommen (oder fehlegeschlagen) ist? Oder nur wenn eine antwort angekommen ist auf einen request aus dem selbigen viewcontroller?
    es gibt eigentlich zwei wichtige Sachen, die in der App vorkommen:

    1. Client sendet request und der aktuelle ViewController braucht dann auch die Antwort (also nur dieser eine)
    2. Server sendet Nachricht zum Client (Realtime Chatter) und da muss die app aber "global" die Nachricht bekommen
  • asteiger schrieb:

    gritsch schrieb:

    was willst du denn erreichen? dass zb alle viewcontroller benachrichtigt werden wenn eine antwort angekommen (oder fehlegeschlagen) ist? Oder nur wenn eine antwort angekommen ist auf einen request aus dem selbigen viewcontroller?
    es gibt eigentlich zwei wichtige Sachen, die in der App vorkommen:
    1. Client sendet request und der aktuelle ViewController braucht dann auch die Antwort (also nur dieser eine)
    2. Server sendet Nachricht zum Client (Realtime Chatter) und da muss die app aber "global" die Nachricht bekommen
    warum die app global? ich sehe da im prinzip nur zwei controller die die info bekommen müssen: der viewcontroller der die message anzeigt und eventuell ein anderer controller der auf die neue message hinweist (badge anzeigt) falls das view zum lesen der news nicht offen ist.

    im prinzip einfach die zwei controller als empfänger registrieren (block oder target + selector).