2014-12-07 2 views
0

Описание:сохранить гнездо пользователя, которые будут использоваться на разных страницах

У меня есть следующий фрагмент кода, который, кажется, отлично работает

<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
<script> 

var socket = io(); 

</script> 

Теперь с розеткой создан Я использую его выполнять различные задачи, которые пользователь хочет, например, пользователь беседует с другими пользователями Интернета ... Теперь, если пользователь перейдет на другую страницу и выполнит что-то еще ... для этого мне понадобится тот же сокет, который был назначен этому пользователю. .. У меня есть массив на стороне сервера, который содержит все сокеты подключенного пользователя вместе с их идентификатором ...

Как я могу держать гнездо со мной все время, посещая различные страницы сайта ..

например я нажимаю на ссылку и что берет меня на страницу ... Теперь я отправляю кое-что на что для этого я хочу, чтобы сокет был предоставлен мне.

+0

Использование библиотеки маршрутизатора – MurWade

ответ

1

Вы не можете сохранить сокет с одной страницы на другую.

Если пользователь собирается перемещаться между страницами, то вам нужно будет сделать две вещи:

  1. Как загружается каждая страница подключите разъем к серверу для этой новой загруженной странице.
  2. На сервере обработайте события отключения, чтобы вы могли удалить сокеты от пользователей, которые перемещались, а затем ваш обычный код для обработки события connect увидит, что они повторно подключаются на новой странице.

Ваш другой выбор, чтобы изменить приложение таким образом, что он изменяет содержимое страницы, но никогда не переходит на новый URL-адрес, тем самым сохраняя состояние Javascript (и все подключенные разъемы), как изменяется пользователем содержание. Это иногда называют дизайном одной страницы. Обычно вы должны использовать вызовы Ajax для извлечения нового контента, а затем вызовов DOM-манипуляций, чтобы изменить то, что пользователь видит в браузере.

0

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

Другим старым грязным решением (чем может быть еще сложнее) является использование страницы с iframe и загрузка всего содержимого там, но сохраните экземпляры SocketIO на родительской странице. имейте в виду, что в этом случае URL страницы не изменится, поэтому пользователи не смогут правильно их добавить.

+0

У меня есть социальная сеть, она не может быть только одной страницей –

Смежные вопросы