2

所以我有 2 个浏览器正在运行,它们都具有相同的页面。在此页面中,您可以使用帐户登录服务器。

连接是用 Strophe 建立的。一切都是 HTML 和 javascript。

现在我已经设法建立了一个聊天(在两个浏览器之间,每个浏览器都使用不同的用户登录)。这是完美的工作。

我现在想要实现的是从另一个用户向一个用户发送一个 IQ。两者都在状态栏中说他们正在接收智商(一个是“得到请求”,另一个是“得到结果”)

现在,我创建我的智商:

    var iq = $iq({type: 'get', to: this.receiver}).c('query', {xmlns: 'http://jabber.org/protocol/pubsub#retrieve-subscriptions'});
    XmppObject.xmpp.connection.sendIQ(iq);

这是在一个可以通过按下按钮调用的函数中设置的。监听器的构建如下:

    $(XmppObject.xmpp).bind("iq", function(event, data){
    addToStatus('Received an iq: \n');
    handlePong(data.iq);
});

使用 handlePong 作为:

    function handlePong(msg)
{
    var objMsg = $(msg);
    var from = objMsg.attr('from');
    var type = objMsg.attr('type');
    var id = objMsg.attr('id');
    var text = 'Received iq from ' + from + ' with id ' + id + ' and type ' + type + '\n\n';
    addToStatus(text);
}

现在,当 client1 向 client2 发送 IQ 时,结果如下:

客户1: Received iq from client2@domain with id pingPong and type result

客户2:

现在有没有办法在 client2 的状态中显示他收到了初始请求?

4

1 回答 1

3

您将需要:

  • 用你自己的命名空间构建一个iq,你不能简单地回收现有的。它会起作用,但这是完全错误的。
  • 在 Strophe 的连接上添加一个处理程序来处理这种类型 if iq. 你不能通过使用 jQuery 的绑定来做到这一点。您应该addHandler在连接上使用。

我能找到的最简单的例子就是pingstrophe 插件的实现,请参阅https://github.com/metajack/strophejs-plugins/blob/master/ping/strophe.ping.js

于 2012-03-28T15:41:08.840 回答