Получение RID и SID с использованием XMPP4r

У меня возникают проблемы с получением SID и RID после подключения к моему jabber-серверу с использованием гема XMPP4r. Я могу успешно подключиться, и мне просто нужно SID и RID, чтобы передать его в JavaScript.

Я искал документы здесь, но это мне не сильно помогло.

Любая помощь или предложения будут высоко оценены. Спасибо!

2 ответа

Решение

На тот случай, если кто-то еще столкнется с таким же препятствием в будущем, я решил это путем прямого доступа к переменным экземпляра следующим образом:

Во-первых, требуется клиент httpbinding, а не клиент

require 'xmpp4r/httpbinding/client'

затем подключиться, делая

@client = Jabber::HTTPBinding::Client.new("your_jabber_id_with/resource")
@client.connect("your_bosh_url")
@client.auth("your_jabber_password")

Переменными экземпляра являются @http_sid и @http_rid, и, поскольку они недоступны, я сделал

sid = @client.instance_variable_get("@http_sid")
rid = @client.instance_variable_get("@http_rid")

Затем я сохранил эти переменные в своем сеансе, чтобы использовать их в своем клиенте Strophe.js.

Вот как я это сделал для всех пользователей Openfire:

require 'xmpp4r'
require 'xmpp4r/httpbinding/client'



class PageController < ApplicationController
  def index

    Jabber::debug = true
    @client = Jabber::HTTPBinding::Client.new('sankalpsingha@sankalpmacbook') # This is the JID
    @client.connect('http://localhost:7070/http-bind/') # This is the bosh address
    @client.auth('sankalp') # This is the password 
    @sid = @client.instance_variable_get('@http_sid')
    @rid = @client.instance_variable_get('@http_rid')


  end
end
Другие вопросы по тегам