Ankündigung

Einklappen
Keine Ankündigung bisher.

Client Connect zu Websocket schlägt fehl.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Client Connect zu Websocket schlägt fehl.

    Hallo mein Problem.

    Ich möchte eine AJAX-Routine mit Long Polling durch ein websocket ersetzen.
    Ich habe nur einen Webspace und verwende kein JQuery!
    Um das zu testen habe ich erst einmal ein Chat Beispiel abgewandelt.


    Mein System ist ein Debian Stretch Linux i7-graf-st-dh 4.9.0-2-amd64 #1 SMP Debian 4.9.18-1 (2017-03-30) x86_64 GNU/Linux
    beim Provider läuft ein Ubuntu Linux sh4-17 4.4.0-72-generic #93-Ubuntu SMP Fri Mar 31 14:07:41 UTC 2017 x86_64

    Der Aufbau des Socket-Servers mittels PHP klappt sowohl auf meinem lokalen Entwicklungsserver als auch beim Provider.
    Der Server wird gestartet per

    exec(sprintf("%s > %s 2>&1 & echo $1", "nohup " .$cmd, $outputfile,$pidArr));


    das führt zu
    nohup php -q /hp/ao/ae/........../socket_chat/server_plain.php 2>&1
    Der Process erscheint bei einem
    ps -axo pid,ppid,command | grep "socket_chat/server_plain.php" | grep -v "grep"
    mit seiner PID und der PPID 1, wurde also dem initprozess zugeordnet.

    Der Socketserver beendet sich nach 120 Sekunden Leerlauf und kann auch über die Webseite vorzeitig gekillt werden.

    Um meiner lokalen Maschine funktionieren auch die Clients. Ich kann mehrere Clients starten, chaten und beenden.

    Das Problem tritt bereits bei der Übergabe der wsURI auf (websocket = new WebSocket(wsUri); ) .
    Der Port und die IP für den Socket wird aus einer Datei gelesen, in die der Server die Daten abgelegt hat.
    {"pid":1799,"serv_ip":"178.254.11.38","port":36477 }


    - die serv_ip wird als host übergeben,
    - port der entsprechende Port
    - pid wird nur für den Kill der Servers benötigt


    function build_socket(prot,host,port){
    //create a new WebSocket object.

    if(tracelog) tracer(ln()+" "+port);
    var wsUri = prot+"://"+host+":"+port+"/ ...... / socket_chat/server_plain.php";
    if(tracelog) tracer(ln()+" "+wsUri+"\n");
    alert(wsUri);
    try {
    websocket = new WebSocket(wsUri);
    if(tracelog) tracer(ln()+" "+(typeof websocket)+" "+(websocket?"true":"false"));
    websocket.onopen = function(ev) { // connection is open
    if(tracelog) tracer(ln()+" "+(ev.code));
    app_div("message_box","system_msg","Connected! port=" +port ); //notify user
    if(tracelog) tracer(ln()+" Connected "+port);
    }

    /* Hier werden alle weiteren Eventhandler für das Socket aufgesetzt

    Es wird aber beim Provider sofort der Catch ausgeführt
    Während es lokal funktioniert.
    */


    } catch (e){
    var reason=get_reason(e); // // See http://tools.ietf.org/html/rfc6455#section-7.4.1
    if(tracelog) tracer(ln()+" Socket Fehler catched "+e.code+" Reason="+reason);
    }
    Socket Fehler catched 18 Reason=undefined
    Fehlercodes section-7.4.1 sind von 1000 bis 1015.
    0-999 Status codes in the range 0-999 are not used.

    Im Moment habe ich keine Idee mehr wo ich noch suchen soll.
    Ich würde mich über einen Input freuen.





  • #2
    Zitat von papalangi_44 Beitrag anzeigen
    Um meiner lokalen Maschine funktionieren auch die Clients. Ich kann mehrere Clients starten, chaten und beenden.

    Das Problem tritt bereits bei der Übergabe der wsURI auf (websocket = new WebSocket(wsUri); ) .
    Kannst du nun eine Verbindung herstellen oder nicht?
    Wie kommst du darauf, dass der Fehler beim Konstruktor von WebSocket auftritt?
    "Software is like Sex, it's best if it's free." - Linus Torvalds

    Kommentar


    • #3
      Ich kann mich anmelden, wenn beide Prozesse auf meiner lokalen Entwicklungsumgebung laufen (localhost).
      Über das Internet beim Provider startet nur der Server, aber der Verbindungsaufbau geht sofort in den catch und liefer mir keine Verbindung.

      Lokales Logfile PHP :
      [12:42:11.818654] 102 ========================
      Server started /data/htdocs/socket_chat/server_plain.php
      [12:42:11.819830] 124 server_plain.php socket_create() SUCCESS HOST=localhost
      [12:42:11.820005] 164 IP= 127.0.0.1 PORT= 36993 PID=3933 /data/htdocs/tmp/socket_data.json
      Parent =1
      Grandparent =0
      {"pid":3933,"serv_ip":"127.0.0.1","port":36993}
      [12:42:11.820027] 185 anz sockets=1
      [12:52:26.658515] 266 No Traffic Hallo cnt=30

      [12:52:56.663786] 266 No Traffic Hallo cnt=60

      [12:53:26.668776] 266 No Traffic Hallo cnt=90

      [12:53:56.673562] 266 No Traffic Hallo cnt=120

      [12:53:56.673683] 293 120 BYE

      [12:53:56.673729] 294 anz sockets=1
      [12:53:56.673779] 302 Clients übrig 1 [0] close Resource id #6
      Array
      (
      [0] => Resource id #6
      )

      [12:53:56.673834] 315 unlink /hp/ao/ae/lz/www/detlefhahn/tmp/socket_port.dat
      count clients=0
      ========= exit ======
      Ausscnitt lokales Trace Javascipt :

      [12:42:13.851000] 1050 init() curr_screen={"x":1920,"y":923,"type":"desktop","to uch_dev":false,"tip":true}
      [12:42:13.851000] 93 : build_socket port=36993
      [12:42:13.852000] 95 : build_socket wsUri=ws://127.0.0.1:36993/socket_chat/server_plain.php

      [12:42:16.825000] 99 : build_socket object true
      [12:42:17.827000] 101 : build_socket/websocket.onopen typeof object
      isTrusted=true
      type=open
      Object target
      url=ws://127.0.0.1:36993/socket_chat/server_plain.php
      readyState=1
      bufferedAmount=0
      extensions=
      protocol=
      binaryType=blob
      CONNECTING=0
      OPEN=1
      CLOSING=2
      CLOSED=3

      ==========
      eventPhase=2
      bubbles=false
      cancelable=false
      defaultPrevented=false
      composed=false
      timeStamp=6026.110171
      cancelBubble=false
      originalTarget=[object WebSocket]
      explicitOriginalTarget=[object WebSocket]
      NONE=0
      CAPTURING_PHASE=1
      AT_TARGET=2
      BUBBLING_PHASE=3
      ALT_MASK=1
      CONTROL_MASK=2
      SHIFT_MASK=4
      META_MASK=8

      [12:42:17.828000] 103 : build_socket/websocket.onopen Connected 36993
      [12:42:17.829000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:42:17] ","type":"system","name":"SERVER","message":"127.0 .0.1 connected 1 online"}
      [12:42:33.878000] 129 : build_socket/< {"message":"Hallo","name":"Detlef","color":"FF70B0 "}
      [12:42:34.831000] 146 : build_socket/websocket.onmessage received user : {"time":"[12:42:34] ","type":"usermsg","name":"Detlef","message":"Hall o","color":"FF70B0"}
      [12:42:50.699000] 129 : build_socket/< {"message":"Lokal klappt es","name":"Detlef","color":"FF70B0"}
      [12:42:50.836000] 146 : build_socket/websocket.onmessage received user : {"time":"[12:42:50] ","type":"usermsg","name":"Detlef","message":"Loka l klappt es","color":"FF70B0"}
      [12:43:19.844000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:42:50] ","type":"system","name":"Detlef","message":" No Traffic since 30 seconds","color":"FF70B0"}
      [12:43:49.334000] 129 : build_socket/< {"message":"Ok, noch mal 120 Sek","name":"Detlef","color":"FF70B0"}
      [12:43:49.854000] 146 : build_socket/websocket.onmessage received user : {"time":"[12:43:49] ","type":"usermsg","name":"Detlef","message":" Ok, noch mal 120 Sek","color":"FF70B0"}
      [12:44:18.864000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:43:49] ","type":"system","name":"Detlef","message":" No Traffic since 30 seconds","color":"FF70B0"}
      [12:44:48.873000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:43:49] ","type":"system","name":"Detlef","message":" No Traffic since 60 seconds","color":"FF70B0"}
      [12:45:18.883000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:43:49] ","type":"system","name":"Detlef","message":" No Traffic since 90 seconds","color":"FF70B0"}
      [12:45:48.893000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:43:49] ","type":"system","name":"Detlef","message":" No Traffic since 120 seconds","color":"FF70B0"}
      [12:45:48.897000] 150 : build_socket/websocket.onmessage received system : {"time":"[12:43:49] ","type":"system","name":"Detlef","message":"N o Traffic, Closed By System <br> Bye","color":"FF70B0"}
      [12:45:48.899000] 175 : socket.js : build_socket/websocket.onclose
      The connection was closed abnormally, e.g., without sending or receiving a Close control frame
      Image Bildschirm :
      websock_lokal_1.png


      PHP Logfile auf dem Server des Providers
      [12:51:57.648540] 102 ========================
      Server started /hp/ao/ae/lz/www/detlefhahn/socket_chat/server_plain.php

      [12:51:57.651750] 124 server_plain.php socket_create() SUCCESS HOST=detlefhahn.de
      [12:51:57.653383] 164 IP= 178.254.11.38 PORT= 33855 PID=25531 /hp/ao/ae/lz/www/detlefhahn//tmp/socket_data.json
      Parent =1
      Grandparent =0
      {"pid":25531,"serv_ip":"178.254.11.38","port":3385 5}
      [12:51:57.653469] 185 anz sockets=1

      [12:52:26.658515] 266 No Traffic Hallo cnt=30

      [12:52:56.663786] 266 No Traffic Hallo cnt=60

      [12:53:26.668776] 266 No Traffic Hallo cnt=90

      [12:53:56.673562] 266 No Traffic Hallo cnt=120

      [12:53:56.673683] 293 120 BYE

      [12:53:56.673729] 294 anz sockets=1
      [12:53:56.673779] 302 Clients übrig 1 [0] close Resource id #6
      Array
      (
      [0] => Resource id #6
      )

      [12:53:56.673834] 315 unlink /hp/ao/ae/lz/www/detlefhahn/tmp/socket_port.dat
      count clients=0
      ========= exit ======
      Ausschnitt Trace Javascipt :


      [12:51:59.667000] 1050 init() curr_screen={"x":1920,"y":923,"type":"desktop","to uch_dev":false,"tip":true}
      [12:51:59.668000] 93 : build_socket port=33855
      [12:51:59.668000] 95 : build_socket wsUri=ws://178.254.11.38:33855/socket_chat/server_plain.php

      [12:52:2.821000] 199 : build_socket Socket Fehler catched 18 Reason=Unknown reason

      websocket_provider_1.png


      Aus diesen Logs schliesse ich, dass beim Konstruktor das Programm stirbt.
      Den Errorcode 18 gibt es aber nicht.

      Kann das evtl damit zusammenhängen. dass .htaccess http nach https umsetzt?
      Ich habe auch mal das Protokoll auf wss geändert. Hat aber auch Fehler gebracht,
      hat aber anscheinend zumindest das Socketobject erzeugt ([13:30:15.599000] 99 : build_socket object true)

      [13:30:13.810000] 1050 init() curr_screen={"x":1920,"y":923,"type":"desktop","to uch_dev":false,"tip":true}
      [13:30:13.811000] 93 : build_socket port=37012
      [13:30:13.811000] 95 : build_socket wsUri=wss://178.254.11.38:37012/socket_chat/server_plain.php

      [13:30:15.599000] 99 : build_socket object true
      [13:30:35.607000] 165 : socket.js : build_socket/websocket.onerror
      Error Occurred - undefined Unknown reason
      [13:30:35.610000] 2509 : showEventData 2261 showEventData 2258 Event [object WebSocket]
      target=undefined

      [13:30:35.610000] showEventData 2258 Event [object WebSocket]
      target=undefined
      target id= NO ID available
      bubbles=false
      cancelable=false
      phase=undefined
      parent id=undefined
      parent element=undefined

      [13:30:35.610000] showEventData 2258 Event [object WebSocket]
      target=undefined
      target id= NO ID available
      bubbles=false
      cancelable=false
      phase=undefined
      parent id=undefined
      parent element=undefined

      [13:30:35.612000] 175 : socket.js : build_socket/websocket.onclose
      The connection was closed abnormally, e.g., without sending or receiving a Close control frame



      Es wird immer nur der serverseitige Teil des Socket erzeugt.
      Hier noch einmal der relevante Teil des javascript:
      Die Funktion wird aus init aufgerufen.
      function build_socket(prot,host,port,prog){

      if(! serv_avail) document.getElementById("message_box").innerHTML=' <h2>Server nicht verfügbar</h2>';

      //create a new WebSocket object.

      if(tracelog) tracer(ln()+" port="+port);
      var wsUri = prot+"://"+host+":"+port+prog;
      if(tracelog) tracer(ln()+" wsUri="+wsUri+"\n");
      alert(wsUri);
      try {
      websocket = new WebSocket(wsUri);
      if(tracelog) tracer(ln()+" "+(typeof websocket)+" "+(websocket?"true":"false"));
      websocket.onopen = function(ev) { // connection is open
      if(tracelog) tracer(ln()+" typeof "+typeof ev+" "+showObject(ev,"onOpen",2));
      app_div("message_box","system_msg","Connected! port=" +port ); //notify user
      if(tracelog) tracer(ln()+" Connected "+port);
      }

      :
      :
      } catch (ev){
      var reason=get_reason(ev);
      if(tracelog) tracer(ln()+" Socket Fehler catched "+ev.code+" Reason="+reason);
      }
      }

      Mir fehlen die Ideen, hoffe auf Input von euch.

      Danke Papalangi (Detlef)

      Kommentar


      • #4
        Bist du dir sicher dass dein Hoster (1blu) Websocket Verbindungen überhaupt erlaubt?
        Bei normalen Webspaces, wie sie normalerweise angeboten werden, funktioniert das in der Regel nicht.
        "Software is like Sex, it's best if it's free." - Linus Torvalds

        Kommentar


        • #5
          phpinfo zeigt mir
          Configure Command -enable-sockets' ...............

          und
          Sockets Support enabled
          Ohne diese Info hätte ich nicht angefangen

          Kommentar


          • #6
            Mach es am Anfang nicht so kompliziert.
            Versuche erstmal nicht, den Prozess in den Hintergrund zu legen, sondern starte den Server Prozess stattdessen erstmal direkt über die Kommandozeile.
            Dann connectest du dich.

            So kannst du sehen, ob der Server Prozess überhaupt läuft. Also, rufe die Datei server_plain.php direkt über die Kommandozeile auf.
            Das blockiert zwar die Konsole, so lange der Prozess läuft, aber du kannst dann über echo, var_dump, print_r, etc auf der Konsole ausgeben lassen, was wo passiert.

            Das macht das debuggen sehr viel leichter!

            Dann solltest du dich langsam rantasten:
            -Erstmal testen, ob socket-Verbindungen überhaupt funktionieren.
            -Prüfen, ob du überhaupt beliebige Ports öffnen darfst und Verbindungen bekommst. Bei den meisten Web-Hostern dürfte das wohl nicht gehen - wer möchte denn, dass auf einer Maschine die von mehreren verwendet wird, einfach neue Ports geöffnet werden dürfen.. oO Bei einem VServer dürfte es allerdings kein Problem sein. Die Standard Ports kannst du da belegen- bzw. macht das die Software ja, der Rest dürfte von einer Firewall verworfen werden.
            -Zunächst ohne HTTPS prüfen, weil das ein Fallstrick ist. Dann müsste aber auch die Webseite ohne https laufen.
            -...

            Kommentar


            • #7
              Zitat von papalangi_44 Beitrag anzeigen
              phpinfo zeigt mir
              Wie schon gesagt wurde, war das darauf bezogen, ob du beliebig Ports nutzen und PHP Scripte von der Konsole aus starten darfst.
              Da müsste dir dein Hoster vermutlich (wenn es Shared-Hosting ist) einen festen Port zugeteilt haben den du nutzen kannst für Socket Verbindungen. Glaube ich aber nicht dass das bei 1blu der Fall ist.
              "Software is like Sex, it's best if it's free." - Linus Torvalds

              Kommentar


              • #8
                Hallo faiwel, JaMa
                - der Serverprocess wird erstellt.
                - Wenn ich mich über putty einlogge sehe ich die gleichen Daten, die mir auch mein Programm anzeigt.
                - Der Process terminiert sich wie vorgesehen nach 120 Sekunden ohne Verbindungsabfrage.
                - Ich kann ihnauch voher über einen Kill-Button im Controllprogramm abschiessen. Dazu wird ein AJAX-Request verwendet,
                der die Pid aus einer Datei liest.
                - Ich verwende keinen vorgegebenen Port,sondern das System gibt mir einen freien Port.

                Das Problem liegt nach meiner Meinung beim Connect von Javascript.
                - Dabei wird sofort der Catch ausgelöst.
                - wie weit da eine Firewall blockiert kann ich nicht sagen.

                -Ich habe gerade alles mühsam auf https umgestellt. Möchte ich jetzt eigentlich nicht zurückdrehen, da es ja später
                auch unter https funktionieren soll.

                Kommentar


                • #9
                  Das System gibt dir einen freien Port, ja. Nur dieser Port wird sehr wahrscheinlich von der Firewall geblockt, d.h. es kommen keine Daten zu deiner Anwendung durch.

                  Du kannst ja mal deinen Socket Server starten und dann mit telnet versuchen darauf eine Verbindung herzustellen (natürlich von deinem Client aus):
                  Code:
                  telnet [host] [port]
                  Wenn dann "Connection refused" dran steht, wird der Port geblockt.
                  "Software is like Sex, it's best if it's free." - Linus Torvalds

                  Kommentar


                  • #10
                    telnet vom Client bekommt einen timeout.
                    Beim Hoster nach login per putty liefert telnet localhost <port> "Connection refused"

                    Schade, dann werde ich das wohl mit AJAX - Requests weitertreiben. Was sicher den Server mehr belastet.
                    Viel Zeit versenkt aber um eine Erfahrung reicher.

                    Danke für eure Zeit und Hilfe

                    Kommentar


                    • #11
                      Hallo,

                      wenn deine Ajax Request etwas macht, worauf der Benutzer nicht warten muss, dann lagere es doch in ein Message Queue System aus wie RabbitMQ. Der Prozess läuft dann entkoppelt von dem Ausliefern der Webseite. Während das noch im Hintergrund auf dem Server werkelt, kann es für den Benutzer erstmal weitergehen.


                      MFG

                      derwunner

                      Kommentar


                      • #12
                        Hoster gefragt? Ports wird er vielleicht keine freischalten, aber eventuell gibt es bereits offnene Ports die man verwenden könnte?

                        Oder mal selber schauen :
                        http://www.dnstools.ch/port-scanner.html


                        grade mal auf die IP geschaut... der MySQL Port 3306 ist offen, was sehr ungewöhnlich ist..
                        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                        Kommentar


                        • #13
                          Ajax läuft ja sowieso asyncron. Mein Problem : User A nimmt etwas auf, erzeugt lokal eine MP3 (Worker) und lädt diese hoch. B, C, und D sollen nun umittelbar informiert werden und die MP3 runterladen
                          und evtl selbst antworten ( aufnehmen, MP3 erzeugen, und hochladen ander informieren).
                          A kann zu jederzeit aufnehmen. Deshalb müsssen B, C und D deshalb immer wieder pollen (das funktioniert schon). Ich wollte deshalb ein Socket um die User per Push zu informieren,
                          um unnütze Requests zu vermeiden. Der Chat war nur ein Versuch, ob das mit Socket funktioniert. Klappt aber leider nur auf der lokalen Maschine.

                          Kommentar


                          • #14
                            Habe den Thread aus den Augen verloren.

                            Zitat von papalangi_44 Beitrag anzeigen
                            telnet vom Client bekommt einen timeout.
                            Beim Hoster nach login per putty liefert telnet localhost <port> "Connection refused"

                            Schade, dann werde ich das wohl mit AJAX - Requests weitertreiben. Was sicher den Server mehr belastet.
                            Viel Zeit versenkt aber um eine Erfahrung reicher.

                            Danke für eure Zeit und Hilfe
                            Dass du lokal bei deinem Hoster ebenfalls "Connection refused" bekommst, liegt daran, dass der Socket Server auf eine bestimmte IP bindet. In diesem Fall dann die Public IP.
                            Auf die lokale Loopback IP 127.0.0.1 (was nach Auflösung von localhost rauskommt) wird die Socket Verbindung nicht hören. Also werden die Pakete verworfen.

                            Das heißt aber noch lange nicht, dass der Socket Server, bzw. die Verbindung nicht theoretisch funktionieren würden
                            Also weshalb das ganze Konzept über den Haufen werfen?

                            Vielleicht solltest du dich nach einem Webspace umschauen, der auch Socket Verbindungen zulässt, oder aber dich mit dem Support von deinem Hoster in Verbindung zu setzen, ob diese dir einen Port freischalten können.
                            Bei uberspace.de schalten die einem z.B. auf Anfrage Ports frei.


                            Einfach irgendwelche offenen Ports würde ich nicht nutzen, das sieht der Hoster bestimmt nicht gerne (außer du hast natürlich die Erlaubnis).
                            "Software is like Sex, it's best if it's free." - Linus Torvalds

                            Kommentar


                            • #15
                              Probier doch erstmal eine einfache Socket-Verbindung herzustellen, bevor du aufgibst - ohne den Socket Server, sondern mit einem einfachen Script.
                              Das rufst du dann von deinem Computer über Telnet auf. Damit bist du am rudimentärsten Element.

                              Was ich außerdem nicht verstehe:

                              Du sagst, dass du den Port nicht festlegst, sondern das System das macht...
                              Wieso?

                              Ich habe für meine Websocket Server die Ports selbst festgelegt, weil das Javascript auf der Webseite ja auch wissen muss, zu welchem Port es sich verbinden soll.
                              Automatisch Server-seitige Ports wählen zu lassen, würde ich, wenn überhaupt, erst implementieren, wenn alles andere funktioniert.
                              Du musst ja sonst irgendwo hinterlegen, welchen Port der Websocket Server bei der Erstellung verwendet hat, und das an das Javascript übergeben.

                              Eine Ausnahme bildet die erweiterte Technik von Websockets, bei denen die Daten über Port 80 geforwardet werden, bzw. die Verbindung über Port 80 ermöglicht wird,
                              indem die normale HTTP Verbindung zu einer Websocket Verbindung erweitert wird.
                              Bevor man das macht, würde ich aber erstmal die einfachen Websockets ohne diesen erweiterten Verbindungsaufbau implementieren. Denn diese Technik muss serverseitig im Webserver umgesetzt werden-
                              das gibt es glaube ich bei noch keinem Web-Hoster. Ich weiß noch nichtmal, ob es dafür inzwischen für Apache überhaupt eine Lösung gibt. Apache ist für so etwas tatsächlich überhaupt nicht konzipiert.
                              Bei NGINX gab es zumindest einige Ansätze, die aber für mich nicht zufriedenstellend und sauber funktioniert haben.


                              Übrigens - du schreibst ja mehrfach, dass sich das Script nach 120 Sekunden beendet. Du hast bei normalen Web-Hostings ja auch das Problem, dass du nur begrenzte Script-Laufzeiten hast. Das heißt, du kannst gar kein durchgehend laufendes Script starten. Ein Websocket Server müsste aber durchgehend laufen.

                              Bei OVH bekommst du übrigens einen ganz kleinen VServer für irgendwas um die 5 EUR/Monat. Die eignen sich perfekt um sowas auszuprobieren, oder laufen zu lassen. Du lässt dann einfach eine Subdomain darauf zeigen..
                              Damit hast du einen "root" auf dem du machen kannst, was du möchtest, ohne an die Begrenzungen eines Webhostings gebunden zu sein.
                              Du könntest, wenn du "nur" spielen willst, auch einfach eine Subdomain einrichten, auf deinen privaten Computer zeigen lassen (oder einfach nur in der host Datei auf deinem Rechner wenn du nur von deinem PC aus probieren willst), und dann darauf den Websockets Server laufen lassen. Der muss nicht zwangsläufig auf dem selben Server laufen, auf dem auch die HTML Seiten liegen.

                              Kommentar

                              Lädt...
                              X