За последние 24 часа нас посетили 20693 программиста и 1108 роботов. Сейчас ищут 375 программистов ...

Таймер на вебсокете

Тема в разделе "Yii", создана пользователем Artur_hopf, 5 июн 2021.

  1. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    Доброй ночи.
    Раньше использовал вебсокет воркерман. Неудобство в том что туда не подключить модели из yii. Это все как бы было отдельно. У него был таймер, выполняющий одно и то же действие раз в заданное время
    PHP:
    1. $task->onWorkerStart = function($task)
    2. {
    3.    //executed once every 2.5 seconds
    4.     $time_interval = 2.5;
    5.     Timer::add($time_interval, function()
    6.     {
    7.         echo "task run\n";
    8.     });
    9. };
    Нашел вебсокет для yii2
    https://github.com/consik/yii2-websocket

    Но у него нет подобного таймера.
    Или я плохо искал, подскажите кто чем пользуется?
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Artur_hopf нравится это.
  3. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @mkramer Прикольно, спасибо. Щас пока с хостингом разбираюсь)
     
  4. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    У своего хостера запустил вебсокет, их ответ:
    Фьюф, обойдусь :D:
    Код (Javascript):
    1. let t = 5000;
    2. let timerId = setTimeout(function eqs_update() {
    3.  
    4.         $.ajax({
    5.             type : 'post',
    6.             url : '/update',
    7.             data : {'time': 'time'}
    8.         }).done(function(data) {
    9.             data = JSON.parse(data);
    10.             // console.log(data);
    11.             timerId = setTimeout(eqs_update, t);
    12.         });
    13. }, t);
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.816
    Симпатии:
    735
    Адрес:
    Татарстан
    С Аяксом теряется весь смысл вебсокетов.. тогда и юзайте таймеры и аякс
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    @Artur_hopf, следующее предупреждение:
    Запрещено Дудосить наш хостинг аяксом.
     
    Walk и Artur_hopf нравится это.
  7. Walk

    Walk Активный пользователь

    С нами с:
    7 сен 2008
    Сообщения:
    452
    Симпатии:
    86
    Зачем такое извращение?

    Делаете отдельный таймер на js, который будет с бека получать только дату по началу отсчета, а при необходимости (если таймер не просто так, а завязан на какую-то механику) - засекайте время также на беке + по сохраненной дате и текущему времени определяете, сколько времени прошло.

    В 2018 году писал пример реализации энергии для браузерной игры:
    код: https://github.com/WalkWeb/Browser-MMORPG-Energy-System
    пример: http://walkweb.ru/energy/