Управление выполнением javascript браузера из командной строки

Я хочу обновить страницу на вкладке браузера с помощью сочетания клавиш или команды CLI, когда окно браузера неактивно (т.е. я работаю на другом дисплее). Веб-страница, которую нужно обновить, находится под моим контролем, поэтому я могу внедрить туда любой javascript. Местоположение прокрутки должно быть сохранено после обновления. Моя идея состоит в том, чтобы включить на этой странице простой javascript, который будет ждать какого-то внешнего события, то есть через сокет, и когда это событие произойдет, запустить location.reload(true). Затем я могу общаться с этим javascript из сценария командной строки (оболочки) и при необходимости назначать сочетание клавиш этому сценарию командной строки. Я почти уверен, что это возможно, потому что есть много инструментов, которые позволяют это делать (например, LiveReloadX). Я не могу использовать такие инструменты, потому что я не хочу автоматически обновлять окно, когда что-то меняется, я хочу сделать это с помощью явной команды. Кажется, что это должно быть очень просто, но я пока не могу найти решение. Итак, мой вопрос: как заставить javascript, работающий в браузере, управляться из командной строки?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
149
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит из двух частей: сервер, работающий в вашей командной строке, и клиент, работающий на вашей веб-странице.

Клиент

В своем браузере вы хотите инициализировать клиент WebSocket. У MDN есть отличный пример, чтобы начать с этого, и я добавил предполагаемую вами функциональность обновления страницы:

// Create WebSocket connection.
const socket = new WebSocket('ws://localhost:8080');

// Connection opened
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// Listen for messages
socket.addEventListener('message', function (event) {
    console.info('Message from server ', event.data);
    location.reload(true)
});

Сервер

Существует множество различных способов настройки сервера WebSocket, и выбор того, который лучше всего подходит для вас, вероятно, слишком широк для ответа на этом сайте. Я провел небольшое исследование, и оказалось, что websocketd — отличный способ обернуть существующую программу командной строки, которая использует стандартный ввод/вывод, в сервер WebSocket. Вам нужно будет реализовать программу командной строки, которая прослушивает ваш ярлык обновления, а затем записывает сообщение в стандартный вывод. Затем вы должны обернуть его с помощью websocketd и запустить из командной строки:

websocketd --port=8080 ./your-shortcut-listener.sh

Другие вопросы по теме