2016-05-13 5 views
-1

Я совершенно новый для django-websocket-redis, и, как обычно, я столкнулся с некоторыми проблемами.Обнаружить, если повторное соединение произошло в redis websocket на стороне клиента

Я установил связь от клиента к серверу и наоборот using Websockets for Redis.

Я хотел бы определить, когда клиент reconnected или disconnected с сервера (что означает, что соединение закрыто и/или открыто снова), так что я реализую механизм, в котором клиенты несут ответственность за вопрос: «Что я пропустил «когда они снова подключаются, а затем запрашивают данные, которые они пропустили.

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

Любые идеи о том, как я могу это сделать?

+0

Если что-то не достаточно ясно, пожалуйста, обратитесь –

+0

Вы можете использовать флаг который вы устанавливаете, когда соединение отключено. И при повторном подключении вы можете проверить флаг и определить, было ли соединение сломано или повторно подключено. –

+0

То, что вы предложили, имеет смысл (конечно), дело в том, что я не получаю «сигнал тревоги», когда сервер отключен. Вот скриншот, чтобы облегчить ситуацию. Http://prntscr.com/b3jpkv –

ответ

1

Проблема с именем функции, которую вы установили, не должно быть on_connecting(), а должно быть только имя функции on_connecting.

Ниже приведен код, замените код ниже, и проверьте, работает ли это.

var ws4redis = WS4Redis({ 
    uri: '{{ WEBSOCKET_URI }}foobar?subscribe-broadcast&publish-broadcast&echo', 
    receive_message: receiveMessage, 
    connecting: on_connecting, 
    connected: on_connected, 
    error: on_error, 
    disconnected: on_disconnected, 
    close: on_close, 
    open: on_open, 
}); 

Когда вы пишете on_connecting() функции становятся называется, когда WS4redis будет инициализирован, поэтому вы видите журнала консоли для всех событий

+0

@Paschalidis: Дайте мне знать, работает ли над решением. Боз, я не могу фактически запустить и проверить. –

+0

Раньше у меня были функции без круглых скобок, но тогда ни одна из функций не запускалась. Странно? –

+0

@PaschalidisChristos: Когда вы кладете скобки, это вызов функции, и когда вы просто используете имя функции, вы назначаете функцию, которая будет вызываться после возникновения события. В вашем случае событие diconnected. –