Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос по реализации (https://javascript.ru/forum/misc/66515-vopros-po-realizacii.html)

Sergey and 20.12.2016 11:51

вопрос по реализации
 
Уважаемые специалисты! Есть задача которую хотелось бы решить в этом году, но пока не получается. Проконсультируйте плз. Задача такая: при открывании странички должен запустится скрипт,только один раз, если открыть много вкладок и каждая будет пытаться его запустить он не должен запускаться. Скрипт устанавливает websocket соединение и получает данные. Данные он должен передавать на все страницы которые его пытались запустить.
Спасибо.

Alexandroppolus 20.12.2016 12:20

Насколько я знаю, в общем случае (например, если пользователь открыл несколько страниц по ссылкам) страницы не могут получить ссылки друг друга и установить связь. Тот же postMessage требует ссылки на целевое окно. Механизма pub/sub нет.

Dilettante_Pro 20.12.2016 12:29

Sergey and,
WebSocket - объект в рамках DOM страницы. Соответственно, на других вкладках - либо свои WebSocket, либо ничего.

Sergey and 20.12.2016 13:20

Думал сделать глобальную переменную и один скрипт который бы запускался один раз при входе на страничку. Скрипт устанавливает соединение и заполняет переменные потом отправляет сообщение через sharedworker port на страницу о том что данные обновились в переменных. Возможно так сделать?

Sergey and 20.12.2016 14:00

Примерно работает но при открытии вкладки запускается новое соединение. Погуглин по словам одно соединение на несколько вкладок, похожие темы есть. Возможно эту задачу как то решали.

destus 20.12.2016 14:11

Цитата:

Думал сделать глобальную переменную и один скрипт который бы запускался один раз при входе на страничку. Скрипт устанавливает соединение и заполняет переменные потом отправляет сообщение через sharedworker port на страницу о том что данные обновились в переменных. Возможно так сделать?
очень ограниченная поддержка фичи http://caniuse.com/#feat=sharedworkers
Цитата:

Возможно эту задачу как то решали.
ты не поверишь -- даже решили...
https://github.com/flowersinthesand/...socket.js#L524

Sergey and 20.12.2016 18:21

Да это наверно подходит тут как то через localstorage. Можно еще спросить?, не подумайте что мне лень разбираться, просто я плохо ориентируюсь в javascript. Как использовать этот скрипт ? эту функцию нужно вызвать на главной странице, простой бы пример с открытием соединения. Сейчас гуглю но пока не совсем понимаю как сделать то что мне нужно. благодарю за информацию
// Makes the socket sharable
			function share() {

Sergey and 20.12.2016 19:28

Еще возникла мысль такая при открытии странички проверяется lokalstorage если там есть указатель на websocket то указатель присваивается на странице websocket pWs = lkstr; а если нет указателя то создается новый объект websocket wbs = new websocket а указатель на него сохраняется в localstorage как то так можно сделать?

Sergey and 20.12.2016 22:10

Не соображу как реализовать может что то подскажите? Можно в localstorage сохранить целиком объект Websocket что бы его на всех страницах десериализовать ? Сорри что много вопросов. Не придумывается никак (


Часовой пояс GMT +3, время: 16:58.