我使用 Strophe.Connection 来创建和初始化一个 Strophe.Connection 对象,并使用“connect”函数启动连接过程,但它返回 ATTACHED 状态而不是书中预期的 CONNECTED 状态。
这段代码来自 Jack Moffitt 的“Professional XMPP programming with JavaScript and JQuery”,但它对我不起作用:-(
- Openfire 和 eJabberd 服务器都一样
- 配置 Apache 代理 BOSH 时也是这样
- 与http://bosh.metajack.im:5280/xmpp-httpbind的测试服务器相同
- 输入http://localhost:5280/http-bind或http://localhost:5280/xmpp-httpbind时 BOSH 状态正常
我已经度过了一整天,而且我很头疼。任何帮助将不胜感激。谢谢,
这是代码:
$(document).bind('connect', function (ev, data) {
var conn = new Strophe.Connection(
"http://localhost:5280/xmpp-httpbind");
conn.connect(data.jid, data.password, function (status) {
if (status === Strophe.Status.CONNECTED) {
$(document).trigger('connected');
} else if (status === Strophe.Status.DISCONNECTED) {
$(document).trigger('disconnected');
}
});
为了了解发生了什么,我将代码修改为这样(连接状态):
$(document).bind('connect', function (ev, data) {
var conn = new Strophe.Connection(
"http://localhost:5280/xmpp-httpbind");
conn.connect(data.jid, data.password, function (status) {
if (status === Strophe.Status.CONNECTED) {
$(document).trigger('connected');
} else if (status === Strophe.Status.DISCONNECTED) {
$(document).trigger('disconnected');
} else if (status === Strophe.Status.ERROR) {
alert ('status ERROR');
} else if (status === Strophe.Status.CONNECTING) {
alert ('status CONNECTING');
} else if (status === Strophe.Status.CONNFAIL) {
alert ('status CONNFAIL');
} else if (status === Strophe.Status.AUTHENTICATING) {
alert ('status AUTHENTICATING');
} else if (status === Strophe.Status.AUTHFAIL) {
alert ('status AUTHFAIL');
} else if (status === Strophe.Status.ATTACHED);
alert ('status ATTACHED');
它向我显示了两个状态:CONNECTING 然后 ATTACHED。为什么我不能像书中预期的那样拥有 CONNECTED 状态???