Сбой соединения WebSocket: Ошибка в установлении соединения: net :: ERR_CONNECTION_TIMED_OUT - PullRequest
3 голосов
/ 09 апреля 2019

Добрый день, ребята

Я создаю приложение чата с храповым механизмом и сохраняю данные в базе данных MySQL.На localhost все работает хорошо, и соединение установлено.

Теперь я загрузил приложение на живой сервер и авторизовался, используя SSH (Putty), затем перешел на php bin/chat-server.php, затем на консоли браузера я получил эту ошибку:

Сбой подключения WebSocket к 'wss: //donorgametes.com: 8080 /': ошибка при установлении соединения: net :: ERR_CONNECTION_TIMED_OUT

Это мой URL-адресapp

https://donorgametes.com/MyApp/

Мой код:

<script>
    var conn = new WebSocket('wss://donorgametes.com:8080');
    conn.onopen = function (e) {
        console.log("Connection established!");

    };

    conn.onmessage = function (e) {
        showMessage(e.data, 'Others');
    };

    document.querySelector('#chat-form').addEventListener('submit', function (e) {
        e.preventDefault();

        var messageElement = document.querySelector('#message');
        var message = messageElement.value;

        var messageData = {
            'userId': '12',
            'content': message
        }
        var messageDataJson = JSON.stringify(messageData);

        conn.send(JSON.stringify(messageDataJson));
        showMessage(message, 'Me');
        messageElement.value = '';
    });

    function showMessage(msg, sender) {
        var messageItem = document.createElement('li');
        var className = 'list-group-item';

        if (messageItem.classList)
            messageItem.classList.add(className);
        else
            messageItem.className += ' ' + className;

        messageItem.innerHTML = '<strong>' + sender + ': </strong>' + msg;
        document.querySelector('#chat-area > ul').appendChild(messageItem);
    }
</script>

Чат-сервер

use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;

require dirname(__DIR__) . '/vendor/autoload.php';

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

$server->run();

Как я могу запустить это на живом сервере и получитьсвязь?Каким шагам я должен следовать?

Ответы [ 2 ]

1 голос
/ 25 апреля 2019

После проверки источника страницы вашего приложения я обнаружил, что вы используете localhost для соединения по номеру строки: 38

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

Что не так, вы должны использовать собственное доменное имя.

Во-вторых, после проверки переадресации портов на вашем домене я обнаружил, что порт 8080 заблокирован прямо сейчас. Поэтому вам лучше попросить вашего хостинг-провайдера открыть порт в IPTABLES для входящих соединений или, если у вас есть root-доступ, попробуйте эту Article , это может помочь вам разрешить переадресацию портов.

0 голосов
/ 13 апреля 2019

На вашем сайте вы используете другой порт (35814).
Так что может быть некоторая путаница, чтобы установить правильные параметры.

<script>
    var conn = new WebSocket('wss://donorgametes.com:35814');
    conn.onopen = function (e) {
        console.log("Connection established!");

    };

    conn.onmessage = function (e) {
        showMessage(e.data, 'Others');
    };

    document.querySelector('#chat-form').addEventListener('submit', function (e) {
        e.preventDefault();

        var messageElement = document.querySelector('#message');
        var message = messageElement.value;

        var messageData = {
            'userId': '12',
            'content': message
        }
        var messageDataJson = JSON.stringify(messageData);

        conn.send(JSON.stringify(messageDataJson));
        showMessage(message, 'Me');
        messageElement.value = '';
    });

    function showMessage(msg, sender) {
        var messageItem = document.createElement('li');
        var className = 'list-group-item';

        if (messageItem.classList)
            messageItem.classList.add(className);
        else
            messageItem.className += ' ' + className;

        messageItem.innerHTML = '<strong>' + sender + ': </strong>' + msg;
        document.querySelector('#chat-area > ul').appendChild(messageItem);
    }
</script>

Показанная ошибка подходит для порта в скрипте:

(индекс): 38 Соединение WebSocket с 'wss: //donorgametes.com: 35814 /' не выполнено: Ошибка при установлении соединения: net :: ERR_CONNECTION_TIMED_OUT

...