Повторное использование веб-сокетов между страницами? - PullRequest
10 голосов
/ 06 марта 2012

Есть ли способ открыть веб-сокет на одной странице, а затем повторно использовать его на другой странице (например, на той же вкладке после того, как пользователь нажал на ссылку), вместо того, чтобы открывать новый веб-сокет после каждой загрузки страницы?Может ли хранилище браузера удерживать открытую розетку?

Цель состоит в том, чтобы иметь возможность сохранять по одному веб-сокету на пользователя (или вкладку), и было бы здорово сделать это без необходимости перемещаться между страницами нетрадиционным способом, например, загружать контент вdiv используя Javascrpt каждый раз, когда пользователь взаимодействует со страницей.

Ответы [ 3 ]

7 голосов
/ 07 января 2013

Ответ нет .

Даже если сокет явно не закрыт при вызове mySocket.close();, при перезагрузке сокет будет закрыт браузером.

Я попытался сохранить объект Web Socket в локальном хранилище и снова использовать его для получения данных. Возвращенный объект действителен, но соединение больше не существует. Потому что, когда страница перезагружается, сокет незаметно завершается.

Сообщение на стороне сервера говорит:

[Errno 10053] An established connection was aborted by the software in your host machine

Вот, пожалуйста ...

7 голосов
/ 03 февраля 2013

A другой подход будет держать пользователя вместо сокета на разных страницах. Под этим я подразумеваю, что вы сохраняете идентификатор клиента в cookie-файле с помощью javascript, каждый раз, когда пользователь пытается открыть новый сокет с любой из страниц вашего веб-сайта, вы отправляете этот идентификатор на сервер, а затем на сервере есть способ узнать, что это новое соединение от того же пользователя.

Я сделал это в недавнем проекте, и он отлично работает :) В зависимости от того, что вы планируете делать, вы можете сохранить состояние пользователя на вашем сервере с его идентификатором или сохранить его в другом файле cookie, или событие использует flash для хранения его в общем объекте!

2 голосов
/ 06 марта 2012

Shared Web Workers позволит вам совместно использовать соединения WebSocket для нескольких вкладок, загруженных из одного источника / сайта.

Shared Web Workers в настоящее время поддерживаются только в Chrome, Safari, Opera .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...