У меня есть реализация faye в моем приложении rails. Метод публикации работает правильно, когда оба браузера находятся на одном компьютере. Когда я открываю приложение из другого браузера на другом компьютере, оно работает только от клиента к серверу и не публикуется для других клиентов. Кроме того, событие публикации не отправляется клиенту, когда в браузере на сервере происходят изменения.
Код публикации контроллера:
def publish(channel, data)
message = {
:channel => channel,
:data => data,
:ext => {:faye_token => FAYE_OUTGOING_AUTH_TOKEN}
}
uri = URI.parse('http://localhost:9292/faye')
Net::HTTP.post_form(uri, :message => message.to_json)
end
Команда для запуска faye:
rackup faye.ru -s thin -E production -d
Пример:
A: Сервер, B: Клиент1, C: Клиент2
A B и C - это разные компьютеры в одной сети, и все они подписаны на один и тот же канал.
- Если я введу данные в B, A увидит данные, но C не увидит данные, пока я не обновлю страницу (которая получает данные из db).
- Если я ввожу данные в A, они не публикуются для других клиентов.
- Если я ввожу данные в C, в канал, на который подписаны только C и B, только C может видеть данные, и они не публикуются в B.
Если бы A, B и C были разными браузерами на одном компьютере, все вышеперечисленные случаи работали бы.
Я запускал это в режиме разработки и пробовал WEBrick, Unicorn и Thin.
Любая помощь будет оценена по достоинству. Спасибо.