Получение 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