nodePush auf IIS

  • Ich glaube ich weiß wodran es liegt:
    Dies ist meine config:


    __dirname wird er sicher unter Windows nicht kennen bzw. nicht verarbeiten können denn im Ordner tmp ist auch nichts weiter drin.
    Sollte ich hier mal Absolute Pfadangaben machen? Oder gehen sogar relaitve?

  • Ich hab auch hier gelesen das ich ja theoretisch den Ordner mit dem nodePush Server auf einen Linux VM kopieren könnte und ihn so dort verwenden könnte das müsste ja theoretisch ohne probleme klappen, doch ich habe 3 WBB und dann dafür 3 Virtualle Linux Systeme wäre doch etwas aufwendig bzw recourcenfressend. Ich kann mir aber nach wie vor nicht erklären wieso es unter Windows nun nicht läuft. Keine Fehlermeldungen etc. oder sollte ich nochmal den Ordner komplett aufräumen und nochmal neu installieren?
    Weiß leider sonst keinen Rat mehr und wäre schade nachdem wir so weit gekommen sind :)

    • Offizieller Beitrag

    Hi,


    ich habe es, nach langem Geteste und Gefrickel ans Laufen bekommen (an einigen Stellen war ich einfach zu doof ;)).
    Bei nodePush sah es so aus:

    • nodejs installiert
    • nodePush runtergeladen
    • Tims Patch angewendet
    • Konfiguration angepasst (nodePush)
    • npm install
    • set DEBUG=*
    • npm start

    Dann noch im ACP die richtigen Daten angeben (dort hatte ich mich beim inbound vertan …) und es lief (siehe „be.bastelstu.max.wcf.user.newNotification: 2“ auf dem zweiten Screenshot).
    Wichtig beim inbound-Socket ist, dass der PHP-Prozess darauf schreiben kann.
    Je nachdem, wie die Server konfiguriert sind, musst du wohl mal in der Firewall gucken oder die Host-IP anpassen.


    Du könntest aber einmal die Datei wcf/lib/system/nodePush/NodePushHandlers.class.php öffnen und in Zeile 86, nach dem catch (\Exception $e) { ein throw $e; einfügen und dann zum Beispiel an eine Pinnwand schreiben.
    Dann sollte – falls keine Verbindung aufgebaut werden kann – die entsprechende Fehlermeldung ausgegeben werden.
    Wenn am Ende alles läuft, kannst du die Datei wieder zurücksetzen.


  • So war auch meine vorgehensweise, nachdem ich noch Visual Studio und Python nachinstallieren musste.


    Dann noch im ACP die richtigen Daten angeben (dort hatte ich mich beim inbound vertan …) und es lief (siehe „be.bastelstu.max.wcf.user.newNotification: 2“ auf dem zweiten Screenshot).


    Bei dir steht auch viel mehr bzw du bekommst auch am inbound Signale bzw messages rein, bei mir sieht diese Seite so aus wie oben in dem Screenshot zu sehen. Die Sitzungen am outbound scheinen keine Probleme zu haben, da diese ja erfolgreich als Anzahl der User angezeigt werden.
    Inbound, Statuspage, Messages etc fehlt bei mir komplett, siehe oben.
    Ok wenn ich Debug=* setze als Umgebunsvariable zeigt er mir auch soviel an wie bei dir oben aber dennoch Inbound: 0 und keine Message "be.bastelstu.max.wcf.user.newNotification: 2".


    Wichtig beim inbound-Socket ist, dass der PHP-Prozess darauf schreiben kann.


    Wie überprüfe ich das? Also der PHP - Prozess wird von dem IIS_User(Name = Seite) ausgeführt der wiederrum der Gruppe IIS_Users angehört die auf dem gesammten Webordner Änderungsrechte also Schreib und Leserechte hat?
    Oder ist dieses nicht auf das Dateisystem bezogen? vielleicht ist hier der Fehler?


    Je nachdem, wie die Server konfiguriert sind, musst du wohl mal in der Firewall gucken oder die Host-IP anpassen.


    Ich erreiche ja die Statusseite die oben in Screenshot zu sehen ist über die externe Adresse und die Clients werden ja auch angezeigt, den internen Port habe ich auch freigegeben, aber bei localhost sollte die Firewall ja sowieso keine Rolle spielen.


    Du könntest aber einmal die Datei wcf/lib/system/nodePush/NodePushHandlers.class.php öffnen und in Zeile 86, nach dem catch (\Exception $e) { ein throw $e; einfügen und dann zum Beispiel an eine Pinnwand schreiben.
    Dann sollte – falls keine Verbindung aufgebaut werden kann – die entsprechende Fehlermeldung ausgegeben werden.
    Wenn am Ende alles läuft, kannst du die Datei wieder zurücksetzen.


    Habe ich gemacht, auf eine fremde Pinnwand gepostet, ohne Probleme, Post erschien kein Fehler.


    Das einzige was ich korrigiert habe du hast kein TCP:// in deiner Nachrichten-Adresse ich habe es auch mal ohne versucht, selbe Ergebniss.
    Irgendwas übersehe ich sicher, ich würde dich gern mal drüberschauen lassen, scheinst ja aktuell gut im Wissen zu sein nach viel gefuckel :) Weiß nur nicht wie, vllt Sykpe etc?

    • Offizieller Beitrag

    Hi,


    ich werde mich in den nächsten Tagen (morgen wird’s wohl eher nichts) noch einmal melden, um dann mit dir nach dem Fehler zu suchen.
    Interessanterweise scheint ja keine Fehlermeldung beim Event: „Nutzer X hat Nutzer Y an die Pinnwand geschrieben, Nutzer Y sollte also eine Benachrichtigung erhalten“ aufgetreten zu sein, zumindest keine, die eine PHP-Exception geworfen hätte.


    Über die geworfene Exception hatte ich bei mir ja die Probleme gefunden:
    „Connection timed out“ => Gnarf, was jetzt los? Aha … Windows Firewall hatte noch geblockt
    „Connection refused“ => Hmm … ok, bei nodePush kommen die Verbindungen schon an, aber warum lehnt es diese ab?! Dann hab’ ich an der Host-IP in der Konfiguration „gespielt“ und es lief. Scheinbar mochte der die Netzwerkbrücke der VM nicht so :D

  • ich werde mich in den nächsten Tagen (morgen wird’s wohl eher nichts) noch einmal melden, um dann mit dir nach dem Fehler zu suchen.


    Das wäre super :) Sag mir einfach bescheit wenn du Zeit hast WE würde mir ganz gut passen.
    Es ist sicher wieder irgend so eine Kleinigkeit die man einfach übersieht -.-


    Interessanterweise scheint ja keine Fehlermeldung beim Event: „Nutzer X hat Nutzer Y an die Pinnwand geschrieben, Nutzer Y sollte also eine Benachrichtigung erhalten“ aufgetreten zu sein, zumindest keine, die eine PHP-Exception geworfen hätte.


    Wenn ich die exception richtig abgefangen habe, denke aber doch.


    „Connection timed out“ => Gnarf, was jetzt los? Aha … Windows Firewall hatte noch geblockt


    Firewall habe ich soweit Freigegeben und externe Verbindungen funktionieren auch (outbound). Aber PHP connectet ja intern über localhost somit sollte dort die Firewall ja keine Rolle spielen.


    „Connection refused“ => Hmm … ok, bei nodePush kommen die Verbindungen schon an, aber warum lehnt es diese ab?! Dann hab’ ich an der Host-IP in der Konfiguration „gespielt“ und es lief. Scheinbar mochte der die Netzwerkbrücke der VM nicht so


    Also ich vermute (wenn der nodePush Server richtig arbeitet und funktioniert) das Problem von PHP zu nodePush.
    Outbound: 5 now sagt mir ja das er die aktuellen Onlinenutzer erkennt und stimmt auch mit den "User online" auf der Seite überein. Ich kann auch die Statuswebsite extern über die Adresse aufrufen um diese Statusmeldungen zu sehen. Sollte also funktionieren.
    Inbound: 0 ist bei mir immer 0. Deswegen denke ich auf dem Weg PHP -> nodePush liegt der Fehler.
    Ich habe auch vorher eine Kopie des unangetasteten "be.bastelstu.wcf.nodePush" - Ordner gemacht, den Ordner auf der Seite gelöscht und nochmal (da nun alle Programme installiert waren) nochmal reinkopiert und die selben Schritte wie du oben gemacht: Patch angewannt -> config editiert -> install -> start. Selbe Ergebniss: Installation direkt beim ersten mal erfogreich, nodePush gestartet und externe Verbindungen klappen interne von PHP wieder 0. Also gehe ich davon aus das der nodePush - Server ordnungsgemäß funktioniert.


    Aber das sehen wir beim drüberschauen. Wie gesagt, meld dich einfach wenn du Zeit hast, danke schonmal :)

    • Offizieller Beitrag

    Hi,


    sorry, dass ich mich erst so spät wieder melde :(
    War ein wenig ausgelastet und die letzten Tage krank.


    Hattest du noch weitergetestet?
    Sonst würde ich sagen, dass wir morgen mal schauen, woran es liegen könnte.
    Ich bastel dann eine Debug-Version des NodePush-Handlers zusammen und hoffe, dass wir irgendeine Ausgabe erhalten, die uns dem Fehler näher bringt :)

  • Hallo :)
    also ich hätte heute bis auf ein bis zwei kleinigkeiten Zeit.
    Sag mir einfach wann genau du ca denkst ?


    Ich habe nicht mehr weitergetestet. Zuminest keinen weiteren Erfolg bekommen.
    Alles kla das wäre super :)

    • Offizieller Beitrag

    Lösung für alle:


    PHP mochte die Socket-Einstellung tcp://localhost:9001 nicht, da localhost auf die IPv6 aufgelöst hat, nodePush aber auf 127.0.0.1 gebunden war.
    Lösung war nun explizit die IPv4 127.0.0.1 im ACP einzutragen.