【问题标题】:Rails, BOSH, XMPP should I manually increase rid?Rails, BOSH, XMPP 我应该手动加掉吗?
【发布时间】:2014-09-23 17:44:19
【问题描述】:

我已经在我的系统上安装了 ejabberd 和 gems 'xmpp4r'、'ruby_bosh'。我正在尝试在我的视图中使用 strophejs 创建一个聊天客户端。现在我正在使用 BOSH 进行 jid、sid 和 rid 操作,并且可以在会话中使用 in view 保存它们。 所以我将 strophejs 连接到 http-bind 之类的

var connection = new Strophe.Connection('http://localhost:5280/http-bind/');

并尝试像

一样附加我的会话
connection.attach("#{bosh_session_jid}", "#{bosh_session_id}", "#{bosh_session_random_id}", function(status){
         console.log(status);
     }); 

bosh_session_jid、bosh_session_rid 和 bosh_session_sid 是我应该使用的标识符,它们没有改变。

所以,在第一次连接尝试时,一切都已连接并且工作正常,我什至可以发送消息。但是在重新加载窗口后(我的意思是 F5)它正在尝试重新连接并重新附加进程并发送给我

POST http://localhost:5280/http-bind/ 404 (Not Found) 

我阅读了“使用 JS 和 jQuery 进行专业 XMPP 编程”并找到了一行

Each subsequent request increments the RID by one.

那么,我是否需要在每次附加后将我的 cookie 中的 rid 增加 1?或者然后呢?还是我不需要?

【问题讨论】:

    标签: ruby-on-rails xmpp strophe


    【解决方案1】:

    刷新或更改页面时,您必须自己增加 RID。在附加之前加载新页面时,我增加 1。注意:如果您存储在 cookie 中,您应该使用新 RID 返回的每个调用进行更新,以便使用最新的 RID 更新您的 cookie。

    【讨论】:

    • 仅在附加之前(您的意思是在连接之后?)?发送消息后我不需要更新 RID 吗? RID 增加数是否重要(我的意思是如果它以某种方式增加 2,我会收到错误消息)吗?
    • 我指的是在您的 cookie 中跟踪 RID 的值,或者您正在存储它。只要不更改页面,就不需要增加 RID 本身。 Strophe 会为您处理。
    • 另外,如果增加小于 5,应该没有问题。
    • 在strophe中,找到_processRequest。添加对您的 func 的调用,它将更新您的 RID 跟踪器,您可以在其中看到“if (this.xmlOutput !== Strophe.Connection.prototype.xmlOutput)”
    • @AKovtunov,您可能会发现以下答案很有帮助:stackoverflow.com/a/25247139/2686738
    猜你喜欢
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    相关资源
    最近更新 更多