Conexão WebSocket para ‘ws: //mydomain.com: 8084 /? Peer_id = 123’ falhou: Erro no estabelecimento da conexão: net :: ERR_CONNECTION_TIMED_OUT

var ws = new WebSocket('ws://' + server); //server is mydomain.com:8084?peer_id=123 console.log('ws://' + server); //var self = this; ws.onopen = function () { console.log("Opening a connection..."); }; ws.onclose = function (evt) { is_connected = false; console.log("Could not listen to the server. The connection is closing"); }; ws.onerror = function (evt) { console.log("ERR: " + evt.data); }; 

Acima é o pedaço de código para conectar o servidor de soquete do cliente.

No servidor, estou usando o PHP WebSocket para configurar o servidor de sockets que está sendo executado no segundo plano

 $server = IoServer::factory( new HttpServer( new WsServer( new RatchetGlobalServer() ) ), 8084 ); $server->run(); 

Primeiro, ele funciona bem no meu local, eu o implementei no meu host, também funciona. No entanto, não funciona quando mudo para outro ISP, o evento onOpen não triggers, ele jogou o erro e chegou ao onclose eventualmente.

No meu país, existem quatro grandes fornecedores de ISP: A, B, C, D

Tentei usar outras linhas de internet de outros ISPs (B, C, D), isso não funciona, mas funciona na minha internet internet (do ISP A). Tenho que enfatizar que o servidor já está localizado no servidor dedicado, já não está no meu localhost. Meus colegas podem acessar meu site e ver isso funcionar bem (eles estão usando o mesmo com a rede e o roteador comigo)

É algo sobre a configuração no meu roteador apenas fazer o trabalho funcionar? Não tenho ideia do que está acontecendo. Tentei descobrir por dias.

O evento fechado veio com o código 1006 com motivo vazio:

 CloseEvent {} bubbles: false cancelBubble: false cancelable: false code: 1006 currentTarget: WebSocketdefaultPrevented: false eventPhase: 0 path: Array[0] reason: ""returnValue: true srcElement: WebSockettarget: WebSockettimeStamp: 1438951964550 type: "close" wasClean: false __proto__: CloseEvent 

O erro é o mesmo com o título desta questão.

Há uma pessoa que teve o problema semelhante ao meu. Servidor Websocket, baseado no socketo.me, não aceitando conexões da Internet compartilhada

O problema é a porta que eu estava usando são 8082 e 8083 bloqueados de repente pelo navegador do cliente. O erro de tempo limite reflete exatamente o resultado da falha na conexão ao meu servidor de soquete web com as portas que não são 80 (HTTP) ou 443 (SSL). A causa, talvez, o firewall, Antivírus ou qualquer problema de proxy HTTP em torno.

Na verdade, existem muitos tópicos em que as pessoas percebem esse problema. Eventualmente, tive que descobrir o caminho para configurar meu servidor para reverter o pedido com a porta 80 para duas portas diferentes: 8080 (meu Apache) e 8083 (websocket).

A solução alternativa funciona para mim também está no site oficial de Ratchet HAProxy