Websockify: Problem mit novnc-websockify unter Windows

Erstellt am 17. Feb. 2013  ·  26Kommentare  ·  Quelle: novnc/websockify

1- Ich lade die Datei https://github.com/downloads/kanaka/websockify/Websockify%20Windows%20Service.zip herunter

2- Ich entpacke den Ordner unter C: \ Websockify Windows Service

3- Ich lade https://github.com/downloads/kanaka/websockify/websockify.zip herunter

und entpacken und kopieren Sie den Inhalt in C: \ Websockify Windows Service

4- Ich lade novnc von https://github.com/kanaka/noVNC herunter

5- Ich entpacke es unter C: \ Users \ waldman \ Downloads \ noVNC-master \ noVNC-master

6- Ich führe den Befehl aus

C: \ Websockify Windows-Dienst> websockify.exe --web "C: \ Benutzer \ waldman \ Downloads \ noVNC-master \ noVNC-master" 6080 localhost
: 5901

Das Protokoll lautet:

WARNUNG: Kein 'Ressourcen'-Modul, Daemonisierungsunterstützung deaktiviert
WebSocket-Servereinstellungen:

  • Hören Sie zu: 6080
  • Flash-Sicherheitsrichtlinienserver
  • Webserver. Webstamm: C: \ Benutzer \ Waldman \ Downloads \ noVNC-Master \ noVNC-Master
  • Keine SSL / TLS-Unterstützung (keine Zertifizierungsdatei)
  • Proxy von: 6080 zu localhost: 5901

In meinem Browser werde ich

http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 6080 & true_color = 1

auch versucht mit

http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 5901 & true_color = 1

Ich werde vom Server getrennt -> WARUM? ? ?

Der Server ist in Ordnung, als wenn ich versuche zu verwenden

http://kanaka.github.com/noVNC/noVNC/vnc_auto.html?host=localhost&port=5901&true_color=1

Ich kann mich problemlos bei meinem Server anmelden

Meine Frage lautet also: Was fehlt, damit ich meinen novnc-Dienst nutzen kann und nicht " http://kanaka.github.com/noVNC/noVNC/vnc_auto.html ".

Ich möchte mein Nonvc haben und kein externes "kanaka.github.com" verwenden.

Danke für die Hilfe

Übrigens ist das gleiche Problem sowohl unter Windows als auch unter Linux aufgetreten (ich bevorzuge die Windows-Lösung).

Das Protokoll ist

2: 127.0.0.1: Ignorieren der Steckdose nicht bereit
3: 127.0.0.1: Leeren Handschlag ignorieren
4: 127.0.0.1: "GET /auto.vnc.html?host=localhost&port=6080&true_color=1 HTTP / 1.1" 404 -
5: 127.0.0.1: Ignorieren der Buchse nicht bereit
6: 127.0.0.1: "GET /auto-vnc.html?host=localhost&port=6080&true_color=1 HTTP / 1.1" 404 -
9: 127.0.0.1: Ignorieren von Socket nicht bereit
10: 127.0.0.1: Leeren Handschlag ignorieren
12: 127.0.0.1: Ignorieren der Steckdose nicht bereit
13: 127.0.0.1: Leeren Handschlag ignorieren
14: 127.0.0.1: Leeren Handschlag ignorieren
15: 127.0.0.1: Leeren Handschlag ignorieren
16: 127.0.0.1: Leeren Handschlag ignorieren
17: 127.0.0.1: Leeren Handschlag ignorieren
18: 127.0.0.1: Leeren Handschlag ignorieren
19: 127.0.0.1: Leeren Handschlag ignorieren
20: 127.0.0.1: Leeren Handschlag ignorieren
21: 127.0.0.1: Leeren Handschlag ignorieren
22: 127.0.0.1: Leeren Handschlag ignorieren
23: 127.0.0.1: Leeren Handschlag ignorieren
24: 127.0.0.1: Leeren Handschlag ignorieren
25: 127.0.0.1: Leeren Handschlag ignorieren
26: 127.0.0.1: Leeren Handschlag ignorieren
27: 127.0.0.1: Leeren Handschlag ignorieren
28: 127.0.0.1: Leeren Handschlag ignorieren
29: 127.0.0.1: Leeren Handschlag ignorieren
30: 127.0.0.1: Leeren Handschlag ignorieren
31: 127.0.0.1: Leeren Handschlag ignorieren
33: 127.0.0.1: Ignoriert Socket nicht bereit
34: 127.0.0.1: Leeren Handschlag ignorieren
35: 127.0.0.1: Leeren Handschlag ignorieren
36: 127.0.0.1: Leeren Handschlag ignorieren

Windows bug patchwelcome

Hilfreichster Kommentar

@sonicnkt : Ich habe es geschafft, eine Exe (aus der Node.js-Version) zu erstellen, sodass Sie Node.js und die Komponenten nicht installieren müssen.
Dies sind die Schritte (ich habe Node.js noch nie verwendet, daher bin ich mir ziemlich sicher, dass es eine kürzere Lösung gibt):

  1. Installieren Sie NodeJS (der globale Standardinstallationspfad lautet:% AppData% \ npm,% AppData% \ npm-Cache)

  2. Installieren Sie die erforderlichen Komponenten und führen Sie Folgendes aus:

    • npm install -g express
    • npm install -g Optimist
    • npm install -g Richtliniendatei
    • npm install -g ws
    • npm install -g http-server
    • npm install -g MIME-Typen
    • npm install -g pkg
  3. Erstellen Sie unter "% AppData% \ npm \ node_modules \" einen Ordner mit dem Namen "websockify" und kopieren Sie den Inhalt des Ordners "websockify \ other \ js".

  4. Führen Sie (Dokumentation der Argumente -> https://www.npmjs.com/package/pkg) aus: pkg "% AppData% \ npm \ node_modules \ websockify \ websockify.js" --targets "latest-win-x86, latest- win-x64 "--out-path" Ihr Ausgabeordner "

Alle 26 Kommentare

@ Doriwal Ich

Nein, es ist ein offenes Thema
Am 2013 2 18 00:34 schrieb "Joel Martin" [email protected] :

@doriwal https://github.com/doriwal Ich stelle fest, dass Sie das Problem geschlossen haben. Tut
das heißt, du hast es herausgefunden?

- -
Antworten Sie direkt auf diese E-Mail oder sehen Sie sie sich auf Gi tHubhttps an: //github.com/kanaka/websockify/issues/67#issuecomment -13698686.

Ich habe das Problem erneut geöffnet, da es nicht gelöst wurde

sieht aus wie mein lokaler novnc funktioniert,
Ich führe nur die Tests wie http: // localhost : 6080 / tests / base64.html aus

und die Antwort ist

onload
PASS: 'window.btoa ("Hallo Welt")' hat das erwartete 'aGVsbG8gd29ybGQ =' zurückgegeben.
PASS: 'window.btoa ("a")' hat das erwartete 'YQ ==' zurückgegeben.
PASS: 'window.btoa ("ab")' hat das erwartete 'YWI =' zurückgegeben.
PASS: 'window.btoa ("abc")' hat das erwartete 'YWJj' zurückgegeben.
PASS: 'window.btoa ("abcd")' hat das erwartete 'YWJjZA ==' zurückgegeben.
PASS: 'window.btoa ("abcde")' hat das erwartete 'YWJjZGU =' zurückgegeben.
PASS: 'window.btoa ("abcdef")' hat das erwartete 'YWJjZGVm' zurückgegeben.
PASS: 'window.btoa ("abcdefg")' hat das erwartete 'YWJjZGVmZw ==' zurückgegeben.
PASS: 'window.btoa ("abcdefgh")' hat das erwartete 'YWJjZGVmZ2g =' zurückgegeben.
PASS: 'window.atob ("aGVsbG8gd29ybGQ =")' hat die erwartete 'Hallo Welt' zurückgegeben.
PASS: 'Base64_decode ("aGVsbG8gd29ybGQ =")' hat die erwartete 'Hallo Welt' zurückgegeben.
PASS: 'window.atob ("YQ ==")' hat das erwartete 'a' zurückgegeben.
PASS: 'Base64_decode ("YQ ==")' hat das erwartete 'a' zurückgegeben.
PASS: 'window.atob ("YWI =")' hat das erwartete 'ab' zurückgegeben.
PASS: 'Base64_decode ("YWI =")' hat das erwartete 'ab' zurückgegeben.
PASS: 'window.atob ("YWJj")' hat das erwartete 'abc' zurückgegeben.
PASS: 'Base64_decode ("YWJj")' hat den erwarteten 'abc' zurückgegeben.
PASS: 'window.atob ("YWJjZA ==")' hat den erwarteten 'abcd' zurückgegeben.
PASS: 'Base64_decode ("YWJjZA ==")' hat den erwarteten 'abcd' zurückgegeben.
PASS: 'window.atob ("YWJjZGU =")' hat das erwartete 'abcde' zurückgegeben.
PASS: 'Base64_decode ("YWJjZGU =")' hat das erwartete 'abcde' zurückgegeben.
PASS: 'window.atob ("YWJjZGVm")' hat das erwartete 'abcdef' zurückgegeben.
PASS: 'Base64_decode ("YWJjZGVm")' hat das erwartete 'abcdef' zurückgegeben.
PASS: 'typeof window.btoa' hat die erwartete 'Funktion' zurückgegeben.
PASS: 'window.btoa ("")' hat erwartet zurückgegeben ''
PASS: 'window.btoa (null)' hat erwartet zurückgegeben ''
PASS: 'window.atob (window.btoa (window))' hat erwartet '[Objektfenster]' zurückgegeben.
PASS: 'window.btoa ("\ u0080 \ u0081")' hat das erwartete 'gIE =' zurückgegeben.
Tests fehlgeschlagen: 0
Tests bestanden: 28

Also denke ich, dass ich novnc lokal installiert habe,

Ich weiß nicht warum
http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 5901 & true_color = 1
oder
http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 6080 & true_color = 1

gab "noVNC ready: native WebSockets, Canvas-Rendering" zurück und nach 2 Sekunden erhalte ich "Connect Timeout"

Ich hatte das gleiche Problem mit der Website websockify.exe, das mit noVNC geliefert wurde.

Ich bin nicht sicher, ob es das gleiche Problem ist, aber als ich versuchte, die Datei websocketproxy.py direkt mit Python 2.7 auszuführen, wird folgende Fehlermeldung angezeigt:

WARNING: no 'resource' module, daemonizing is slower or disabled
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Python27\lib\multiprocessing\forking.py", line 374, in main
    self = load(from_parent)
  File "C:\Python27\lib\pickle.py", line 1378, in load
    return Unpickler(file).load()
  File "C:\Python27\lib\pickle.py", line 858, in load
    dispatch[key](self)
  File "C:\Python27\lib\pickle.py", line 1133, in load_reduce
    value = func(*args)
  File "C:\Python27\lib\multiprocessing\reduction.py", line 193, in rebuild_socket
    _sock = fromfd(fd, family, type_, proto)
  File "C:\Python27\lib\multiprocessing\reduction.py", line 182, in fromfd
    s = socket.fromfd(fd, family, type_, proto)
AttributeError: 'module' object has no attribute 'fromfd'

Anscheinend liegt das daran, dass socket.fromfd unter Python 2.x für Windows nicht implementiert ist: http://bugs.python.org/issue1378.

Wenn ich versuche, websockify mit Python 3.3 auszuführen, wird eine andere Fehlermeldung angezeigt:

  1: handler exception: Cannot serialize socket object
WARNING: no 'resource' module, daemonizing is slower or disabled
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "C:\Python33\lib\multiprocessing\forking.py", line 344, in main
    self = load(from_parent)
EOFError

@doriwal , @ smithkl42 :

Ich konnte websockify unter Windows zum Laufen bringen, wenn ich Python 3.2 verwendete. Weder 2.7 noch 3.3 scheinen die notwendige Unterstützung für Pseudo-Forking-Prozesse unter Windows zu haben. Ich habe es mit keiner anderen Version versucht.

@ smithkl42 : Es scheint, dass Python den Prozess auswählt und dann abhebt, um eine Gabelung auszuführen, und etwas in websockify ist nicht auswählbar. Es ist jedoch seltsam, dass es auf 3.2 und nicht auf 3.3 funktioniert. Können Sie einen erweiterten Stack-Trace für Python 3.3 erhalten? Ich denke, es lohnt sich zumindest zu versuchen, das Problem für Python 3.3+ zu beheben, wenn wir können.

Ich bin damit einverstanden, dass es sich lohnt, das Problem zu beheben. Ich bin kein Python-Codierer, daher bin ich mir nicht sicher, wie ich einen detaillierteren Stack-Trace erhalten soll. Genau das wird auf meiner Konsole angezeigt, wenn ich versuche, ihn unter Python 3.3 auszuführen. Irgendwelche Vorschläge?

Hoppla, wollte das nicht schließen. Muss auf die falsche Schaltfläche geklickt haben.
Bah! Python 3.3 weigert sich, Sockets zu serialisieren:
von /usr/lib64/python3.3/socket.py :

    def __getstate__(self):
        raise TypeError("Cannot serialize socket object")

Während Python 3.2 überhaupt keine __getstate__ -Methode angibt. Konnten Sie bestätigen, dass die Dinge unter Python 3.2 tatsächlich richtig funktionierten? Ich kann nicht sehen, dass die Python-Entwickler das Beizen von Sockets in Python 3.3 willkürlich deaktivieren, es sei denn, es stimmt tatsächlich etwas nicht mit der Funktionsweise in 3.2 ...

Ja, 3.2 funktioniert gut für mich. Ich habe es nicht unter Last getestet, aber unter der begrenzten Last, die ich darauf geworfen habe, hat es einwandfrei funktioniert. Was auch immer Serialisierungsprobleme sein mögen, ich vermute, sie müssen von der Art sein, die (aus welchem ​​Grund auch immer) keine Auswirkungen auf Websockify hat.

@kanaka : Ich versuche, das Websockify unter Windows 2012 R2 Standard (64 Bit) auszuführen.
Ich habe Python 2.7.11 Version installiert.
Installierte kompatible 64-Bit-Versionen von "py2exe" und "numpy".
Ich habe alle Probleme durchlaufen, die beim Ausführen von novnc unter Windows erwähnt wurden (insbesondere # 108 und # 233).

Problem: Wenn ich versuche, eine Verbindung über die Web-URL herzustellen (http: //localhost/vnc.html? Host = localhost & port = 6080), wird die Handler-Ausnahme "Thread.lock-Objekte können nicht ausgewählt werden" angezeigt.
"Importfehler: Kein Modul mit dem Namen run" aus der Datei forking.py

Bitte schlagen Sie eine Lösung vor. Ich habe das Gefühl, dass dieses Tool unter Windows noch nicht erfolgreich ausgeführt wurde. Bitte lassen Sie mich wissen, wenn es nicht unter Windows ausgeführt werden soll. Oder fehlt mir etwas von meiner Seite? Schätzen Sie Ihre Antwort

image

@ kabilraj1979 websockify funktioniert unter Windows mit Python 2.X nicht. Es gab einige Erfolge mit Python 3.X. Die node.js-Version von websockify funktioniert anscheinend (ich habe kein Windows-System zum Testen) unter Windows ziemlich gut. Ich empfehle daher, die node.js-Version zu verwenden, wenn dies eine Option für Sie ist.

@kanaka : Danke für die Antwort. Mit websockify.js konnte ich eine Verbindung herstellen. Vielen Dank. Sie müssen herausfinden, welcher Code im Webinhalt enthalten ist. Die js-Datei hat mehr oder weniger einen Teil der Web-Socket-Verbindung gesendet und empfangen (eine Art Reverse-Proxy)?

Gibt es eine Möglichkeit, die nodejs-Version in einer einfachen Skript- / Exe-Version zu erstellen, die einfach bereitzustellen ist?
Ich habe das Powershell-Skript hier gesehen: https://github.com/aberbegall/novnc-launch-powershell/blob/master/README.md
Es gibt jedoch viele Abhängigkeiten (Installation vollständiger Knoten, dann Herunterladen zusätzlicher Pakete usw.), sodass es für mich nicht einfach ist, dies auf mehreren Clients bereitzustellen.
Mein Ziel war es, eine kostenlose, offene und unabhängige Remote-Lösung zusammenzustellen, die keine zusätzlichen Server benötigt.

@kanaka : Jedes Mal, wenn ich einen Proxy für einen VNC-Server ausführen muss, muss ich unterschiedliche Instanzen von websockify.js haben. Gibt es eine Möglichkeit, es als Listener auszuführen, der mehrere Verbindungen im laufenden Betrieb zulässt? WebSocketConnections können von einer Instanz der Datei websockify.js im laufenden Betrieb geöffnet werden, oder?

@ kabilraj1979 Mehrere Clients können gleichzeitig eine Verbindung zu derselben Instanz von websockify.js herstellen. Sie benötigen jedoch eine Instanz von websockify.js pro Ziel, zu dem Sie eine Verbindung herstellen möchten. Die Python-Version von websockify unterstützt Ziel-Plugins, mit denen das Ziel durch ein vom Client bereitgestelltes undurchsichtiges Token ausgewählt werden kann. Diese Funktionalität wurde jedoch noch nicht auf websockify.js portiert.

Ich habe das SIGCHLD-Ding getestet, aber wie Sie bemerkt haben, gibt es noch viele Probleme mit multiprocessing . Im Moment habe ich einen aktiven Block in den Code eingefügt, damit er unter Windows nicht gestartet werden kann. Sollte unseren Umgang mit Problemen zumindest etwas reibungsloser gestalten.

@sonicnkt : Ich habe es geschafft, eine Exe (aus der Node.js-Version) zu erstellen, sodass Sie Node.js und die Komponenten nicht installieren müssen.
Dies sind die Schritte (ich habe Node.js noch nie verwendet, daher bin ich mir ziemlich sicher, dass es eine kürzere Lösung gibt):

  1. Installieren Sie NodeJS (der globale Standardinstallationspfad lautet:% AppData% \ npm,% AppData% \ npm-Cache)

  2. Installieren Sie die erforderlichen Komponenten und führen Sie Folgendes aus:

    • npm install -g express
    • npm install -g Optimist
    • npm install -g Richtliniendatei
    • npm install -g ws
    • npm install -g http-server
    • npm install -g MIME-Typen
    • npm install -g pkg
  3. Erstellen Sie unter "% AppData% \ npm \ node_modules \" einen Ordner mit dem Namen "websockify" und kopieren Sie den Inhalt des Ordners "websockify \ other \ js".

  4. Führen Sie (Dokumentation der Argumente -> https://www.npmjs.com/package/pkg) aus: pkg "% AppData% \ npm \ node_modules \ websockify \ websockify.js" --targets "latest-win-x86, latest- win-x64 "--out-path" Ihr Ausgabeordner "

Das funktioniert auch bei mir gut. Getestet unter Windows 10 und mit noVNC + TigerVNC Windows Server.

@ gdan101 Können Sie mir sagen, welche Version des Knotens Sie hatten, als dieser ausgeführt wurde? Ich habe ein Problem mit NodeJS 10.1.0 und Websockify: https://github.com/novnc/websockify/issues/307#issuecomment -391125660

@mliudev Ich hatte Node-v6.11.4 auf einem Windows 7 x64-Computer!

@kanaka @CendioOssman Unterstützt NOVNC die umgekehrte VNC-Verbindung so, wie sie von tightvnc unterstützt wird?
Referenz: https://kempniu.wordpress.com/2009/03/21/reverse-connections-in-tightvnc/

Wie können wir den novnc Viewer im Hörmodus öffnen, wenn die Antwort auf die obige Frage Ja lautet?

Wir verwenden novnc zum Erfassen von Geräten innerhalb des Netzwerks. Wir möchten jedoch dieselbe Webanwendung zum Erfassen von (vnc) Geräten außerhalb des Netzwerks über das Internet verwenden. Dies liegt daran, dass der Webserver keine Geräte mit privater IP hinter dem Router erreichen kann. Wir möchten die Reverse-VNC-Funktion verwenden, mit der Geräte mit privater IP-Adresse den Bildschirm für den NovnC-Client auf dem Webserver freigeben können

@SiddharthJyoti Bitte hör auf, die gleiche Frage an mehreren Stellen zu spammen

@samhed Ihre schnelle Antwort auf die Frage wird geschätzt.

noVNC unterstützt keine umgekehrten Verbindungen wie die in diesem Blog beschriebene.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen