2015-03-01 4 views
23

Я пытаюсь подключиться к сокету на моем сервере. Мой сервер работает серверный сокет с Rachet на порт 8080. я пытаюсь запустить этот код:Ошибка: Ошибка при установлении соединения: net :: ERR_CONNECTION_REFUSED

<script> 

    try{ 
    conn = new WebSocket('wss://localhost:8080'); 


conn.onclose = function (e) 
{ 
     //checkUser(); 
} 

conn.onopen = function(e) 
{ 
    console.log("test"); 
}; 

    }catch (error) 
{ 
    console.log(error); 
} 

    </script> 

Но я получаю эту ошибку:

WebSocket connection to 'wss://localhost:8080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED 

Когда я пытаюсь соединиться с моей Linux оболочки Я получаю это:

[email protected](none):~# telnet localhost 8080 
Trying ::1... 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
+2

Установлена ​​ли ваша установка Ratchet для поддержки защищенных соединений ('wss:')? Правильно ли установлены ваши ключи и сертификат? Также обратите внимание, что самозаверяющие сертификаты не будут приниматься клиентом WebSocket; он должен быть подписан доверенным ЦС. Тот факт, что ваш сервер принимает соединения, не означает, что он настроен правильно, чтобы принимать * безопасные * соединения. отказ принять безопасное соединение является сбоем на сервере; чтобы получить помощь, вам нужно предоставить дополнительную информацию о том, как настроена установка Ratchet. (Или просто не используйте безопасные соединения.) – apsillers

+0

вы проверили настройки брандмауэра сервера? –

ответ

0

Во-первых, я бы попробовал незащищенное подключение к Интернету. Так удалить один из s-х из адреса соединения:

conn = new WebSocket('ws://localhost:8080'); 

Если это не сработает, то следующая вещь, которую я хотел бы проверить это настройки брандмауэра вашего сервера. Вам необходимо открыть порт 8080 как в TCP_IN, так и TCP_OUT.

+4

где открыть порт 8080 как в TCP_IN, так и в TCP_OUT. –

+0

Я решил эту проблему, открыв порт в своем брандмауэре и брандмауэре моего модема. – agm1984

+0

Никто не может просто сказать вам, как открывать порты в вашем брандмауэре. Это зависит от вашей операционной системы и от любого уникального программного обеспечения или оборудования, которое у вас есть. Попробуйте взрыв Google с «силой: 1337». – agm1984

0

В моем случае ответ довольно прост. Пожалуйста, проверьте внимательно жёстко прописанные URL-адрес порта: это 8080. По какой-то причине значение изменилось на: например 3030.

Просто обновить порт в вашем Аякса URL-адрес строки в подходящий.

conn = new WebSocket('ws://localhost:3030'); //should solve the issue 
4

CONNECTION_REFUSED является стандартным, если порт закрыт, но он может быть отклонен, поскольку SSL не удается аутентификации (один из миллиарда причин). Вы настроили SSL с помощью Ratchet? (Apache отключен) Пробовали ли вы без SSL в JavaScript?

Я не думаю, что у Ratchet есть встроенная поддержка SSL. Но даже если это произойдет, вы сначала захотите попробовать протокол ws: //; это намного проще, проще отлаживать и ближе к telnet. Chrome или служба сокета также могут генерировать ошибку REFUSED, если служба не поддерживает SSL (поскольку вы явно запрашивали SSL).

Однако отклоненное сообщение, вероятно, является проблемой на стороне сервера (обычно порт закрыт).

Смежные вопросы