Como eu configuraria um servidor websocket para rodar ao lado de um servidor web?

1

Desculpe ter que ler isso duas vezes.

Atualmente, tenho um Apache2 em escuta na porta 80 e um servidor de jogo caseiro em execução em uma porta não registrada mais alta (50214). Eu reescrevendo o jogo em javascript e planejando enviar a comunicação de rede através de websockets na porta 80 para contornar os firewalls que muitas empresas e universidades implementam.

Como eu poderia configurar um servidor websocket para escutar conexões websocket em 80, e descompactá-los e encaminhá-los para o servidor do jogo, ouvindo em 50214, sem interferir com o apache?

Qual implementação do servidor websocket devo usar? e como isso geralmente é feito? ajude um noob. obrigado sf.

    
por Nathan 15.11.2010 / 02:39

3 respostas

5

Você não pode ter dois serviços escutando na mesma porta, então você precisará de um segundo endereço IP.

Honestamente, se eu estivesse implementando isso, eu usaria o apache no front-end, usando o mod_proxy para fazer o proxy das solicitações do seu jogo para o seu servidor personalizado que estaria apenas ouvindo no localhost. Isso eliminaria a necessidade de ter dois endereços IP.

    
por 15.11.2010 / 02:47
1

Uma ideia: configure um host virtual em sua instância do apache existente e configure um respondente do AJAX, escrito em PHP, Python ou [seu idioma favorito]. Seu código de cliente javascript faz chamadas AJAX para seu vache apache, e o respondedor AJAX faz quaisquer chamadas necessárias ao seu outro servidor para atender às solicitações do cliente.

    
por 15.11.2010 / 03:02
1

Dê uma olhada no proxy HTTP reverso !

Ele praticamente redireciona solicitações diferentes para as portas específicas, por exemplo:

  • tem o apache escutando na porta 8000
  • seu servidor websocket favorito ouvindo em 8001
  • faça sua ferramenta de proxy reverso http escutar na porta 80 e redirecionar example.com/ws para a porta 8001 e o restante para 8000

Por exemplo, olhe para node-http-proxy , é MUITO fácil de usar, e existe até mesmo um exemplo simples de websockets via socket.io ali (é claro que você pode usar o que você preferir para um servidor ws).

Editar: Também vale a pena conferir o módulo mod_proxy do apache, como uma alternativa (as versões mais novas do apache também suportam um módulo mod_proxy_wstunnel ).

    
por 18.06.2014 / 09:28

Tags