Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.12.2016, 11:51
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

вопрос по реализации
Уважаемые специалисты! Есть задача которую хотелось бы решить в этом году, но пока не получается. Проконсультируйте плз. Задача такая: при открывании странички должен запустится скрипт,только один раз, если открыть много вкладок и каждая будет пытаться его запустить он не должен запускаться. Скрипт устанавливает websocket соединение и получает данные. Данные он должен передавать на все страницы которые его пытались запустить.
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 20.12.2016, 12:20
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Насколько я знаю, в общем случае (например, если пользователь открыл несколько страниц по ссылкам) страницы не могут получить ссылки друг друга и установить связь. Тот же postMessage требует ссылки на целевое окно. Механизма pub/sub нет.
Ответить с цитированием
  #3 (permalink)  
Старый 20.12.2016, 12:29
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Sergey and,
WebSocket - объект в рамках DOM страницы. Соответственно, на других вкладках - либо свои WebSocket, либо ничего.
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2016, 13:20
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

Думал сделать глобальную переменную и один скрипт который бы запускался один раз при входе на страничку. Скрипт устанавливает соединение и заполняет переменные потом отправляет сообщение через sharedworker port на страницу о том что данные обновились в переменных. Возможно так сделать?
Ответить с цитированием
  #5 (permalink)  
Старый 20.12.2016, 14:00
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

Примерно работает но при открытии вкладки запускается новое соединение. Погуглин по словам одно соединение на несколько вкладок, похожие темы есть. Возможно эту задачу как то решали.
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2016, 14:11
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Цитата:
Думал сделать глобальную переменную и один скрипт который бы запускался один раз при входе на страничку. Скрипт устанавливает соединение и заполняет переменные потом отправляет сообщение через sharedworker port на страницу о том что данные обновились в переменных. Возможно так сделать?
очень ограниченная поддержка фичи http://caniuse.com/#feat=sharedworkers
Цитата:
Возможно эту задачу как то решали.
ты не поверишь -- даже решили...
https://github.com/flowersinthesand/...socket.js#L524
Ответить с цитированием
  #7 (permalink)  
Старый 20.12.2016, 18:21
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

Да это наверно подходит тут как то через localstorage. Можно еще спросить?, не подумайте что мне лень разбираться, просто я плохо ориентируюсь в javascript. Как использовать этот скрипт ? эту функцию нужно вызвать на главной странице, простой бы пример с открытием соединения. Сейчас гуглю но пока не совсем понимаю как сделать то что мне нужно. благодарю за информацию
// Makes the socket sharable
			function share() {
Ответить с цитированием
  #8 (permalink)  
Старый 20.12.2016, 19:28
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

Еще возникла мысль такая при открытии странички проверяется lokalstorage если там есть указатель на websocket то указатель присваивается на странице websocket pWs = lkstr; а если нет указателя то создается новый объект websocket wbs = new websocket а указатель на него сохраняется в localstorage как то так можно сделать?
Ответить с цитированием
  #9 (permalink)  
Старый 20.12.2016, 22:10
Аспирант
Отправить личное сообщение для Sergey and Посмотреть профиль Найти все сообщения от Sergey and
 
Регистрация: 06.12.2016
Сообщений: 44

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по учебнику Invis1ble Сайт Javascript.ru 12 21.03.2011 20:06
Вопрос по работе функций в PHP bayah Серверные языки и технологии 2 12.02.2011 17:42
Теоретический вопрос. gods33 (X)HTML/CSS 10 16.12.2010 23:49
Вопрос о циклических ссылках (JavaScript -> Dom -> JavaScipt) BlueIce Events/DOM/Window 10 17.02.2010 21:58
Требуеться совет в реализации интерфейса! B~Vladi Элементы интерфейса 16 03.06.2009 15:57