вопрос по реализации
Уважаемые специалисты! Есть задача которую хотелось бы решить в этом году, но пока не получается. Проконсультируйте плз. Задача такая: при открывании странички должен запустится скрипт,только один раз, если открыть много вкладок и каждая будет пытаться его запустить он не должен запускаться. Скрипт устанавливает websocket соединение и получает данные. Данные он должен передавать на все страницы которые его пытались запустить.
Спасибо. |
Насколько я знаю, в общем случае (например, если пользователь открыл несколько страниц по ссылкам) страницы не могут получить ссылки друг друга и установить связь. Тот же postMessage требует ссылки на целевое окно. Механизма pub/sub нет.
|
Sergey and,
WebSocket - объект в рамках DOM страницы. Соответственно, на других вкладках - либо свои WebSocket, либо ничего. |
Думал сделать глобальную переменную и один скрипт который бы запускался один раз при входе на страничку. Скрипт устанавливает соединение и заполняет переменные потом отправляет сообщение через sharedworker port на страницу о том что данные обновились в переменных. Возможно так сделать?
|
Примерно работает но при открытии вкладки запускается новое соединение. Погуглин по словам одно соединение на несколько вкладок, похожие темы есть. Возможно эту задачу как то решали.
|
Цитата:
Цитата:
https://github.com/flowersinthesand/...socket.js#L524 |
Да это наверно подходит тут как то через localstorage. Можно еще спросить?, не подумайте что мне лень разбираться, просто я плохо ориентируюсь в javascript. Как использовать этот скрипт ? эту функцию нужно вызвать на главной странице, простой бы пример с открытием соединения. Сейчас гуглю но пока не совсем понимаю как сделать то что мне нужно. благодарю за информацию
// Makes the socket sharable function share() { |
Еще возникла мысль такая при открытии странички проверяется lokalstorage если там есть указатель на websocket то указатель присваивается на странице websocket pWs = lkstr; а если нет указателя то создается новый объект websocket wbs = new websocket а указатель на него сохраняется в localstorage как то так можно сделать?
|
Не соображу как реализовать может что то подскажите? Можно в localstorage сохранить целиком объект Websocket что бы его на всех страницах десериализовать ? Сорри что много вопросов. Не придумывается никак (
|
Часовой пояс GMT +3, время: 16:58. |