Websockify: Problema com novnc-websockify no Windows

Criado em 17 fev. 2013  ·  26Comentários  ·  Fonte: novnc/websockify

1- Eu faço download do https://github.com/downloads/kanaka/websockify/Websockify%20Windows%20Service.zip

2- eu descompacto a pasta em C: \ Websockify Windows Service

3- faço download de https://github.com/downloads/kanaka/websockify/websockify.zip

e descompacte e copie seu conteúdo para C: \ Websockify Windows Service

4- eu faço download do novnc em https://github.com/kanaka/noVNC

5- eu descompacto em C: \ Users \ waldman \ Downloads \ noVNC-master \ noVNC-master

6- eu executo o comando

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

o log é:

AVISO: nenhum módulo de 'recurso', suporte à daemonização desativado
Configurações do servidor WebSocket:

  • Ouça em: 6080
  • Servidor de política de segurança Flash
  • Servidor web. Raiz da Web: C: \ Users \ waldman \ Downloads \ noVNC-master \ noVNC-master
  • Sem suporte SSL / TLS (sem arquivo cert)
  • proxy de: 6080 para localhost: 5901

No meu navegador vou

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

também tentei com

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

Estou desconectando o servidor -> POR QUÊ? ? ?

O servidor está bom como quando estou tentando usar

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

Eu posso entrar no meu servidor sem problemas

Portanto, minha pergunta é o que está faltando para que eu possa usar meu serviço novnc e não usar o " http://kanaka.github.com/noVNC/noVNC/vnc_auto.html "

Quero ter meu nonvc e não usar "kanaka.github.com" externo

Obrigado pela ajuda

BTW mesmo problema aconteceu no Windows e Linux (eu prefiro a solução do Windows)

o log é

2: 127.0.0.1: ignorar soquete não está pronto
3: 127.0.0.1: ignorando handshake vazio
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: ignorar soquete não está pronto
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: ignorar soquete não está pronto
10: 127.0.0.1: ignorando handshake vazio
12: 127.0.0.1: ignorar soquete não está pronto
13: 127.0.0.1: ignorando handshake vazio
14: 127.0.0.1: ignorando handshake vazio
15: 127.0.0.1: ignorando handshake vazio
16: 127.0.0.1: ignorando handshake vazio
17: 127.0.0.1: ignorando handshake vazio
18: 127.0.0.1: ignorando handshake vazio
19: 127.0.0.1: ignorando handshake vazio
20: 127.0.0.1: ignorando handshake vazio
21: 127.0.0.1: ignorando handshake vazio
22: 127.0.0.1: ignorando handshake vazio
23: 127.0.0.1: ignorando handshake vazio
24: 127.0.0.1: ignorando handshake vazio
25: 127.0.0.1: ignorando handshake vazio
26: 127.0.0.1: ignorando handshake vazio
27: 127.0.0.1: ignorando handshake vazio
28: 127.0.0.1: ignorando handshake vazio
29: 127.0.0.1: ignorando handshake vazio
30: 127.0.0.1: ignorando handshake vazio
31: 127.0.0.1: ignorando handshake vazio
33: 127.0.0.1: ignorar soquete não está pronto
34: 127.0.0.1: ignorando handshake vazio
35: 127.0.0.1: ignorando handshake vazio
36: 127.0.0.1: ignorando handshake vazio

Windows bug patchwelcome

Comentários muito úteis

@sonicnkt : Consegui criar um exe (da versão Node.js) para que você não precise instalar o Node.js e os componentes.
Estas são as etapas (nunca usei Node.js antes, então tenho certeza de que há uma solução mais curta):

  1. Instale o NodeJS (o caminho de instalação global padrão é:% AppData% \ npm,% AppData% \ npm-cache)

  2. Instale os componentes necessários, execute:

    • npm install -g express
    • npm install -g optimist
    • npm install -g policyfile
    • npm install -g ws
    • npm install -g http-server
    • npm install -g mime-types
    • npm install -g pacote
  3. Crie uma pasta chamada "websockify" em "% AppData% \ npm \ node_modules \" e copie o conteúdo da pasta "websockify \ other \ js" nela.

  4. Execute (documentação de argumentos -> https://www.npmjs.com/package/pkg): pkg "% AppData% \ npm \ node_modules \ websockify \ websockify.js" --targets "latest-win-x86, latest- win-x64 "--out-path" sua pasta de saída "

Todos 26 comentários

@doriwal Percebi que você encerrou o problema. Isso significa que você descobriu?

Não, é um problema aberto
Em 2013, 2 18 00:34, "Joel Martin" [email protected] escreveu:

@doriwal https://github.com/doriwal Percebi que você encerrou o problema. Faz
isso significa que você descobriu?

-
Responda a este e-mail diretamente ou visualize-o em Gi tHubhttps: //github.com/kanaka/websockify/issues/67#issuecomment -13698686.

Eu reabri o problema porque não foi resolvido

parece que meu novnc local está funcionando,
Acabei de executar os testes como http: // localhost : 6080 / tests / base64.html

e a resposta é

carregando
PASS: 'window.btoa ("hello world")' retornou esperado 'aGVsbG8gd29ybGQ ='
PASS: 'window.btoa ("a")' retornou esperado 'YQ =='
PASS: 'window.btoa ("ab")' retornou esperado 'YWI ='
PASS: 'window.btoa ("abc")' retornou esperado 'YWJj'
PASS: 'window.btoa ("abcd")' retornou esperado 'YWJjZA =='
PASS: 'window.btoa ("abcde")' retornou esperado 'YWJjZGU ='
PASS: 'window.btoa ("abcdef")' retornou esperado 'YWJjZGVm'
PASS: 'window.btoa ("abcdefg")' retornou esperado 'YWJjZGVmZw =='
PASS: 'window.btoa ("abcdefgh")' retornou esperado 'YWJjZGVmZ2g ='
PASS: 'window.atob ("aGVsbG8gd29ybGQ =")' retornou esperado 'hello world'
APROVADO: 'Base64_decode ("aGVsbG8gd29ybGQ =")' retornou esperado 'olá mundo'
PASS: 'window.atob ("YQ ==")' retornou esperado 'a'
PASS: 'Base64_decode ("YQ ==")' retornou esperado 'a'
PASS: 'window.atob ("YWI =")' retornou esperado 'ab'
PASSA: 'Base64_decode ("YWI =")' retornou 'ab' esperado
PASS: 'window.atob ("YWJj")' retornou esperado 'abc'
PASS: 'Base64_decode ("YWJj")' retornou esperado 'abc'
PASS: 'window.atob ("YWJjZA ==")' retornou esperado 'abcd'
PASS: 'Base64_decode ("YWJjZA ==")' retornou esperado 'abcd'
PASS: 'window.atob ("YWJjZGU =")' retornou esperado 'abcde'
PASS: 'Base64_decode ("YWJjZGU =")' retornou esperado 'abcde'
PASS: 'window.atob ("YWJjZGVm")' retornou esperado 'abcdef'
PASS: 'Base64_decode ("YWJjZGVm")' retornou esperado 'abcdef'
PASS: 'typeof window.btoa' retornou a 'função esperada'
PASS: 'window.btoa ("")' retornou esperado ''
PASS: 'window.btoa (null)' retornou esperado ''
PASS: 'window.atob (window.btoa (window))' retornou esperado '[object Window]'
PASS: 'window.btoa ("\ u0080 \ u0081")' retornou esperado 'gIE ='
Os testes falharam: 0
Testes aprovados: 28

Acho que instalei o novnc localmente,

Não sei porque
http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 5901 & true_color = 1
ou
http: // localhost : 6080 / vnc_auto.html? host = localhost & port = 6080 & true_color = 1

retornou "noVNC pronto: WebSockets nativos, renderização de tela" e após 2 segundos recebo "Tempo limite de conexão"

Eu estava tendo o mesmo problema com o websockify.exe que acompanha o noVNC.

Não tenho certeza se é o mesmo problema, mas quando tentei executar o arquivo websocketproxy.py diretamente com Python 2.7, recebo este erro:

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'

Aparentemente, é porque socket.fromfd não está implementado no Python 2.x para Windows: http://bugs.python.org/issue1378.

Quando tento executar websockify com Python 3.3, recebo uma mensagem de erro diferente:

  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 : você ainda está tendo esse problema?

Consegui fazer o websockify rodar no Windows se usasse o Python 3.2. Nem o 2.7 nem o 3.3 parecem ter o suporte necessário para processos de pseudo-bifurcação no Windows. Eu não tentei com nenhuma outra versão.

@ smithkl42 : parece que o Python faz pickles e depois desembrulha o processo para fazer um fork, e algo no websockify não pode ser retirado. É estranho, porém, que funcione no 3.2 e não no 3.3. Você pode obter um rastreamento de pilha mais estendido para Python 3.3? Acho que pelo menos vale a pena tentar corrigir o problema do Python 3.3+ se possível.

Eu concordo que vale a pena consertar. Não sou um programador Python, então não tenho certeza de como obter um rastreamento de pilha mais detalhado - isso é apenas o que aparece no meu console quando tento executá-lo no Python 3.3. Alguma sugestão?

Opa, não queria fechar isso. Deve ter clicado no botão errado.
Bah! O Python 3.3 totalmente pronto se recusa a serializar soquetes:
de /usr/lib64/python3.3/socket.py :

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

Enquanto Python 3.2 não especifica um método __getstate__ em tudo. Você conseguiu confirmar se as coisas realmente funcionaram corretamente no Python 3.2? Não consigo ver os desenvolvedores Python desativando arbitrariamente o decapagem de soquetes no Python 3.3, a menos que houvesse realmente algo errado com a maneira como as coisas funcionavam no 3.2 ...

Sim, 3.2 está funcionando bem para mim. Não testei sob carga, mas sob a carga limitada que joguei, está funcionando muito bem. Quaisquer que sejam os problemas de serialização, suspeito que sejam do tipo que (por qualquer motivo) não estão afetando o websockify.

@kanaka : Estou tentando executar o websockify no Windows 2012 R2 Standard (64 bits).
Instalei a versão Python 2.7.11.
Versões de 64 bits compatíveis instaladas de "py2exe" e "numpy".
Passou por todos os problemas mencionados para executar novnc no Windows (especialmente # 108 e # 233)

Problema: quando tento me conectar por meio do url da web (http: //localhost/vnc.html? Host = localhost & port = 6080), estou recebendo a exceção do manipulador: "não é possível selecionar objetos thread.lock"
"Erro de importação: Nenhum módulo denominado run" do forking.py

Por favor, sugira uma resolução. Tenho a sensação de que não houve uma experiência robusta e bem-sucedida de execução dessa ferramenta no Windows. Informe-me se não se destina a execução no Windows. Ou estou perdendo algo do meu lado? Agradeço sua resposta

image

@ kabilraj1979 websockify não funciona no Windows usando python 2.X. Houve algum sucesso usando o python 3.X. No entanto, a versão node.js do websockify aparentemente (não tenho um sistema Windows para testar) funciona muito bem no Windows, então sugiro que você use a versão node.js se for uma opção para você.

@kanaka : Obrigado pela resposta. O websockify.js me permitiu conectar. Obrigado. Precisa explorar que código existe no conteúdo da web. O arquivo js estava mais ou menos fazendo a parte de envio e recebimento da conexão do web socket (espécie de proxy reverso)?

Existe uma maneira de construir a versão nodejs em uma versão simples de script / exe que seja fácil de implantar?
Eu vi o script Powershell aqui: https://github.com/aberbegall/novnc-launch-powershell/blob/master/README.md
Mas ele tem muitas dependências (instalar nodejs completo, depois baixar pacotes adicionais, etc.), então não há como implementar facilmente para mim em vários clientes.
Meu objetivo era montar uma solução remota livre, aberta e independente que não dependesse de nenhum servidor adicional.

@kanaka : Sempre que preciso fazer proxy para um servidor VNC, preciso ter instâncias diferentes do websockify.js. Existe uma maneira de executá-lo como um ouvinte que pode permitir várias conexões em tempo real? WebSocketConnections pode ser aberto a partir de uma instância do websockify.js em tempo real, certo?

@ kabilraj1979 vários clientes podem se conectar à mesma instância de websockify.js ao mesmo tempo. No entanto, você precisa ter uma instância de websockify.js por destino ao qual deseja se conectar. A versão python do websockify suporta plug-ins de destino que permitem que o destino seja selecionado por um token opaco fornecido pelo cliente. No entanto, essa funcionalidade não foi portada para o websockify.js ainda.

Eu testei o SIGCHLD, mas como você notou, existem muitos problemas restantes com multiprocessing . Por enquanto, coloquei um bloco ativo no código para que ele se recuse a iniciar no Windows. Deve tornar nosso tratamento das questões um pouco mais suave, pelo menos.

@sonicnkt : Consegui criar um exe (da versão Node.js) para que você não precise instalar o Node.js e os componentes.
Estas são as etapas (nunca usei Node.js antes, então tenho certeza de que há uma solução mais curta):

  1. Instale o NodeJS (o caminho de instalação global padrão é:% AppData% \ npm,% AppData% \ npm-cache)

  2. Instale os componentes necessários, execute:

    • npm install -g express
    • npm install -g optimist
    • npm install -g policyfile
    • npm install -g ws
    • npm install -g http-server
    • npm install -g mime-types
    • npm install -g pacote
  3. Crie uma pasta chamada "websockify" em "% AppData% \ npm \ node_modules \" e copie o conteúdo da pasta "websockify \ other \ js" nela.

  4. Execute (documentação de argumentos -> https://www.npmjs.com/package/pkg): pkg "% AppData% \ npm \ node_modules \ websockify \ websockify.js" --targets "latest-win-x86, latest- win-x64 "--out-path" sua pasta de saída "

Isso funciona bem para mim também. Testado no Windows 10 e com o servidor noVNC + TigerVNC Windows.

@ gdan101 Você poderia me dizer qual versão do nó você tinha quando fez isso funcionar? Estou tendo um problema com nodejs 10.1.0 e websockify: https://github.com/novnc/websockify/issues/307#issuecomment -391125660

@mliudev Eu tinha o node-v6.11.4 em uma máquina Windows 7 x64!

@kanaka @CendioOssman O NOVNC oferece suporte à conexão VNC reversa da maneira como é compatível com o tightvnc.
Referência: https://kempniu.wordpress.com/2009/03/21/reverse-connections-in-tightvnc/

Como podemos abrir o novnc viewer no modo de escuta se a resposta for sim para a pergunta acima.

Estamos usando o novnc para capturar dispositivos dentro da rede, no entanto, queremos usar o mesmo aplicativo da web para capturar (vnc) dispositivos fora da rede pela internet. Isso ocorre porque o servidor web não pode alcançar dispositivos com ip privado atrás do roteador. Gostaríamos de usar o recurso de vnc reverso que deve permitir que dispositivos com ip privado compartilhem a tela com o cliente novnc no servidor web

@SiddharthJyoti Por favor, pare de

@samhed Sua resposta rápida à pergunta será apreciada.

noVNC não suporta conexões reversas como a descrita naquele blog.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

AndreaCrotti picture AndreaCrotti  ·  3Comentários

DarwinSurvivor picture DarwinSurvivor  ·  3Comentários

gpetukhov picture gpetukhov  ·  3Comentários

ghost picture ghost  ·  3Comentários

chuma picture chuma  ·  3Comentários