• Как убрать зацикливание при включении видео?

    lookreciuspin
    @lookreciuspin
    Соррян за путаницу, но к сожалению, работа с библиотеками вроде Player.js может быть иногда сложной из-за особенностей их внутренней работы. В данном случае, кажется, что события "play", "pause" и "seek", которые ты слушаешь, не срабатывают при вызове соответствующих методов через API. Это может быть связано с тем, как эти события реализованы внутри Player.js.

    Если это так, то одним из возможных решений может быть использование дополнительных флагов для каждого из событий, чтобы отслеживать их вручную. Ты можешь установить флаг в true перед вызовом метода API, а затем сбросить его обратно в false после вызова. Затем, при получении события, можно проверить значение флага и, если оно равно true, игнорировать событие.

    $(document).ready(function() {
        var socketio = io();
    
        let player = new Playerjs({
            id: "player",
            file: JSON.parse($("#player").attr("data-links"))
        });
    
        const playerFrame = $("#player"),
              messagesBox = $(".chat-box .messages"),
              messagesScroll = $(".chat-box"),
              chatInputs = $(".chat-inputs");
    
        let isPlayApiCall = false,
            isPauseApiCall = false,
            isSeekApiCall = false; // вводим отдельные флаги для каждого события
    
        socketio.on("play", (data) => {
            if (!player.api("playing")) {
                isPlayApiCall = true; // ставим флаг, что это вызов через API
                player.api("play");
                isPlayApiCall = false; // сбрасываем флаг
            }
            isSeekApiCall = true; // ставим флаг, что это вызов через API
            player.api("seek", data.time);
            isSeekApiCall = false; // сбрасываем флаг
        });
    
        socketio.on("pause", (data) => {
            if (player.api("playing")) {
                isPauseApiCall = true; // ставим флаг, что это вызов через API
                player.api("pause");
                isPauseApiCall = false; // сбрасываем флаг
            }
        });
    
        socketio.on("seek", (data) => {
            isSeekApiCall = true; // ставим флаг, что это вызов через API
            player.api("seek", data.time);
            isSeekApiCall = false; // сбрасываем флаг
        });
    
        playerFrame.on("play", (event) => {
            console.log(event.type)
            if(!isPlayApiCall){ // отправляем событие, только если это не вызов через API
                socketio.emit("play", { time: player.api("time") });
            }
        });
    
        playerFrame.on("pause", (event) => {
            console.log(event.type)
            if(!isPauseApiCall){ // отправляем событие, только если это не вызов через API
                socketio.emit("pause", {});
            }
        });
    
        playerFrame.on("seek", (event) => {
            console.log(event.type)
            if(!isSeekApiCall){ // отправляем событие, только если это не вызов через API
                socketio.emit("seek", { time: player.api("time") });
            }
        });
    });


    Надеюсь, этот подход решит твою проблему. Если всё равно что-то идет не так, то возможно стоит проверить документацию Player.js
    Написано
  • Чем отличается программист и инженер-программист?

    lookreciuspin
    @lookreciuspin
    Т.е ты хочешь сказать, если прорешать и прочитать Кнута станешь инженером?

    Я то думал инженер за проектирование и бутылочные горлышки любых систем. (ирония)
  • Какие курсы JavaScript выбрать?

    lookreciuspin
    @lookreciuspin
    Вот это я орнул. Книги + MDN + learn.javascript.ru. Если уроки то на английском и в бóльшей степени техникал инглиш.
    Нафиг этого инфоцыгана. Про ивентлуп он понял всё или еще нет?
  • Что должен знать senior frontend developer?

    lookreciuspin
    @lookreciuspin
    А принципы DRY KISS не должен. А если надо микрофичу внедрить мы же не должны заниматься копипастой DONT REPEAT YOURSELF, радостно фапнут рубисты, не повторяемся и не пилим костыль, чтобы другие фичи не полетели, пишем юнит тесты. И получается для одно фичи, мы пишем в 4 раза больше кода, что противоречит KISS. Сначала в парадигмах разберитесь.
  • Как правильно спарсить DOM элемент с помощью Cheerio?

    lookreciuspin
    @lookreciuspin
    Где у тебя объявление функции, где асинк эвейт?
    const request = require("request-promise");
    // const fs = require("fs");
    const cheerio = require("cheerio");
    
    async function main() {
      const html = await request.get("https://spb.xiacom.ru/catalog/smartfony-xiaomi/?PAGEN_1=1&ajax=catalog.list");
      // fs.writeFilASync("./test.html", html);
      const $ = await cheerio.load(html)
      const textH1 = $("h1").text();
        console.log(textH1);
    
       $(".compact-card__body").each((index, element)=> {
        console.log($(element).html()); html
        console.log($(element).text()); текст
          });
    }
    
    main();
  • Нужен совет по созданию игры 2d (runner)?

    lookreciuspin
    @lookreciuspin
    Человек, Пишем HTML5 арканоид и змейку на чистом JavaScript с нуля
  • Нужен совет по созданию игры 2d (runner)?

    lookreciuspin
    @lookreciuspin
    Человек, я просто не стал ссылку давать, чтобы не рекламировать но там на простых играх типа арканойд
  • Есть ли хорошие примеры на vue.js?

    lookreciuspin
    @lookreciuspin
    ГитЛаб на реакте же
    Бандеролька не на вью
  • Можно ли создать "Студенческий портал" только с HTML/CSS + JS?

    lookreciuspin
    @lookreciuspin
    Да не ужели? А Node + React + react route + (mongo db || json server).