Показать сообщение отдельно
  #1 (permalink)  
Старый 17.09.2018, 12:12
Профессор
Отправить личное сообщение для Роман Андреевич Посмотреть профиль Найти все сообщения от Роман Андреевич
 
Регистрация: 12.08.2016
Сообщений: 299

websocket на стороне клиента
Коллеги, доброго времени суток,
суть проблемы такова. Пишу приложение и вэбсокетами. Встал на клиенте. Точнее встал над recconect
Вот код:

'use strict';
window.SocketModule = ((window) => {
        
    class SocketModule {
        
        constructor(options) {
            
            this.path = options.path;
            this.reconnectNumber = 0;
            this.connection();
            
        }
        
        /*
         *  connection - установить соединение
         *      connectionStatus,
         *      
         *  disconnection - остановить соединение
         *  reconnection - пересоединение
         *  
         *  send - отправить сообщение
         *  accept - принять сообщение
         *  
         */
        
        connection() {
            
            this.socket = new WebSocket(this.path);
                
                this.socket.addEventListener('open', (e) => {

console.log('connection...);
                    
                    this.send('checkConnection', {

                        connect: true

                    });
                    
                    
                    
                });
                
                this.socket.addEventListener('close', (e) => {

console.log('reconnection... please wait...');
                    
                    this.connection(this.path);
                    
                });

        }
        
        send(event_name, data) { // event_name (string), data (string, array, object)

            if (event_name.constructor.name === 'String') {
                
                let _this = this;
                
                this.wait(function() {
                
                    _this.socket.send(JSON.stringify({event_name, data}));

                }, 0);
                
            } else return;
            
        }
        
        wait(callback, time) {
            
            let timer;
            clearTimeout(timer);
            
            if (this.socket.readyState === 1) {
                callback();
            } else {
                let _this = this;
                timer = setTimeout(function() {
                    _this.wait(callback, time);
                }, time);
            }
        }
    
    };
    
    return SocketModule;

})(window);


Создается экземпляр класса websocket и на него навешивается события open и close. По событию close происходит рекурсивный вызов этой же функции. В консоль падает сообщение : WebSocket connection to 'ws://server.localhost:5555/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED - так и должно быть. После включения сервера связь появляется, все ок.

Но у меня вопрос, может кто делал или словом подскажет. Как избежать данного сообщения??? Или может, как сделать reconnect???

Последний раз редактировалось Роман Андреевич, 17.09.2018 в 12:14.
Ответить с цитированием