2012-05-03 3 views
3

Я разрабатываю многостраничное веб-приложение с Express, имеющее функции чата (питание от Socket.IO). Пользователи могут приглашать других в частный общий чат (который также имеет другие компоненты, такие как общая чертежная доска). Я хотел бы перенаправить обоих пользователей (приглашение и приглашение) на другой URL-адрес после завершения транзакции приглашения.Перенаправление на новую страницу в ответ на событие Socket.IO

Поскольку socket.io не имеет доступа к объектам запроса и ответа моих маршрутов, я попытался передать мой экземпляр socket.io в мою обработку маршрута. Проблемы дублирования обработчиков событий накапливаются при обновлении страницы, Express выдает ошибку при попытке сделать перенаправление после того, как ответ уже отправлен (это имеет смысл).

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

Есть ли другие варианты? Каков наилучший способ реализовать то, что мне нужно?

ответ

0

Я не уверен, что в клиенте это будет слишком хрупким. Просто отправьте URL-адрес через сокет и сделайте window.location.href = redirectUrl или $('div').load(newContentUrl) с помощью jQuery.

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