#ios #ruby-on-rails #pusher
#iOS #ruby-on-rails #толкатель
Вопрос:
У меня есть два приложения для iOS, давайте назовем это приложением агента и приложением клиента. У меня есть функция чата между этими двумя приложениями, но чаты должны быть записаны на сервере.
Я создал два приложения-толкателя, по одному для каждого из приложений iOS. Они оба подписываются на свои соответствующие private-{id}-channel
.
Теперь каждый раз, когда генерируется сообщение, скажем, из приложения агента (через HTTP-запрос к серверу), я хочу, чтобы сервер создавал событие pusher с сообщением агента на частном канале клиента.
Возможно ли достичь вышеуказанного с помощью частных каналов Pusher?
Комментарии:
1. Просто сделайте так, чтобы они оба присоединились к одному каналу
2. У @Rao есть какое-либо решение? Есть ли у вас какие-либо другие идеи о том, как это делается, любое предложение или учебное пособие будут оценены.
Ответ №1:
Один из способов добиться этого — подключить обоих пользователей к одному и тому же каналу.
Допустим, у вас есть два пользователя: user-a
и user-b
. Оба пользователя подписываются на общий частный канал private-chat-user-a-user-b
.
let myChannel = pusher.subscribe("private-chat-user-a-user-b")
Затем запуск клиентских событий на канале
myChannel.trigger(eventName: "client-my-event", data: ["your": "data"])
Клиентские события — это способ отправки сообщений только между клиентами, без их ретрансляции сервером.
Раскрытие информации: я работаю в pusher.
Ответ №2:
Я хотел записать чат на сервере, поэтому вместо того, чтобы создавать клиентское приложение, напрямую отправляющее сообщение по каналу приложения агента, я заставил клиентское приложение вызвать мой серверный API, который записывает сообщение и использует его на канале, который прослушивает приложение агента.