Smoke

<<< Назад

Использование злосчастных WebSoccet

Скорее заметка для себя

Шо це такэ? (ИМХО)

Это такой кривущий метод обмена информацией без обновления страницы, аля AJAX, только кривущий :D
Так же, он сырой и .... кривущий :D Одно в нем хорошо - оно работает само и заводить таймеры как в AJAX не придется, да и данные обновляются почти мгновенно.

Готовый код для своих страниц

Я тут причесал код который мне подсказали коллеги (Пост в коннекте , мало ли кому пригодится, только сразу скажу - у меня этот код работает через 1 место и коннект переодически падает...

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="/js/jquery.tiny-pubsub.js"></script>
<script>
//Сокеты
var wsTimer = 0;
var startedWebSockets = 0;

function startWebSockets() {
    var loc = window.location, new_uri;
    var serverUrl='';
    if (loc.protocol === "https:") {
            serverUrl = "wss:";
    } else {
            serverUrl = "ws:";
    }

    serverUrl += "//" + loc.host + ':8001/majordomo';

    try {
        console.log('✓ Подключение к серверу '+serverUrl);
     if (window.MozWebSocket) {
       wsSocket = new MozWebSocket(serverUrl);
     } else if (window.WebSocket) {
       wsSocket = new WebSocket(serverUrl);
     }

    } catch (e) {
        console.log('❌ Ошибка подключения к серверу '+serverUrl);
         return false;
    }
    wsSocket.binaryType = 'blob';
    wsSocket.onopen = function(msg) {
        console.log('✓ Подключен к серверу');
        startedWebSockets=1;
        clearTimeout(wsTimer);
        $.publish('wsConnected');
    };
    wsSocket.onmessage = function(msg) {
        console.log('⇿ Получены данные от WS');
        var response;
        response = JSON.parse(msg.data);
        console.log('⇿ Действие: '+response.action+'; Данные: '+response.data);
        $.publish('wsData', response);
        return;
    };
    wsSocket.onclose = function(msg) {
        startedWebSockets=0;
        wsTimer=setTimeout('startWebSockets();', 5*1000);
        $.publish('wsDisconnected', []);
        console.log('❌ Отключен от сервера, повтор подключения через 5 секунд...');
        return;
    };

    $.subscribe('wsConnected', function (_) {
        var payload;
        payload = new Object();
        payload.action = 'Subscribe';
        payload.data = new Object();
        payload.data.TYPE='properties';
        //Вот тут через , писать названия объектов за которыми хотим "следить"
        payload.data.PROPERTIES = 'BedroomLight,BedroomRadiator';    
        wsSocket.send(JSON.stringify(payload));
    });
}

$(document).ready(function(){
startWebSockets();
});

</script>

Тем кому мало

Тем, кому мало функционала велком капать класс :D - /var/www/html/lib/websockets/server/lib/WebSocket/Application

####Так же, знатоков прошу ответить на форуме

Обсуждение (0) (1)

Смотрите так же:
07.10.2019 Управление планшетом из сцен/WEB
23.07.2019 Как можно НЕ использовать сцены в MJDM. Часть 1.

Нижний Новгород, Россия

На форуме: SmoKE_xDDD