ConverseJS 和 Openfire:房间加入问题
ConverseJS and Openfire: room joining problems
我已经设法让 converse.js v.0.9.0 客户端与我在 Debian 机器上的 openfire 服务器一起工作。
连接工作正常,我创建了几个用户来测试一切,一切正常,我可以登录,在用户之间进行私人对话甚至创建房间,点击 "list rooms"按钮。
当一个用户想加入另一个用户创建的房间时,问题就出现了。这样做时,带有房间名称的 window 正确弹出,但该房间中的用户列表是空的,根本不存在通信(没有人可以在该房间看到彼此的消息)。
我查看了 openfire 管理面板,在会议服务器中房间显示正确,但只有 1 个用户。
这是openfire会议服务器配置的问题吗?还是逆向客户端需要额外的房间聊天模块?
我把测试页的代码贴出来看看能不能帮上忙
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>prueba</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/converse.css">
<script src="builds/converse.js"></script>
</head>
<body>
</body>
<script>
require(['converse'], function (converse) {
converse.initialize({
auto_list_rooms: false,
auto_subscribe: false,
bosh_service_url: 'http://converse:7070/http-bind/',
hide_muc_server: false,
i18n: locales.en,
prebind: false,
show_controlbox_by_default: true,
roster_groups: true
});
});
</script>
</html>
已解决!
问题是房间选项。
有几种方法可以执行 .join 到 MUC(多用户聊天)中,我引用了 Ignite Realtime:
// Create a MultiUserChat using a XMPPConnection for a room
MultiUserChat muc2 = new MultiUserChat(conn1, "myroom@conference.jabber.org");
// User2 joins the new room
// The room service will decide the amount of history to send
muc2.join("testbot2");
In this example we can see how to join a room with a given nickname and password:
// User2 joins the new room using a password
// The room service will decide the amount of history to send
muc2.join("testbot2", "password");
In this example we can see how to join a room with a given nickname specifying the amount of history to receive:
// User2 joins the new room using a password and specifying
// the amount of history to receive. In this example we are requesting the last 5 messages.
DiscussionHistory history = new DiscussionHistory();
history.setMaxStanzas(5);
muc2.join("testbot2", "password", history, conn1.getPacketReplyTimeout());
所以我的猜测是 Converse Join 函数仅在第一种方式(只有字符串参数的方式)上格式化,当我在服务器中检查更多选项时,可能要求更多参数的覆盖函数拒绝 converse执行其连接函数的可能性只有一个参数。
我已经设法让 converse.js v.0.9.0 客户端与我在 Debian 机器上的 openfire 服务器一起工作。
连接工作正常,我创建了几个用户来测试一切,一切正常,我可以登录,在用户之间进行私人对话甚至创建房间,点击 "list rooms"按钮。
当一个用户想加入另一个用户创建的房间时,问题就出现了。这样做时,带有房间名称的 window 正确弹出,但该房间中的用户列表是空的,根本不存在通信(没有人可以在该房间看到彼此的消息)。
我查看了 openfire 管理面板,在会议服务器中房间显示正确,但只有 1 个用户。
这是openfire会议服务器配置的问题吗?还是逆向客户端需要额外的房间聊天模块?
我把测试页的代码贴出来看看能不能帮上忙
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>prueba</title>
<link rel="stylesheet" type="text/css" media="screen" href="css/converse.css">
<script src="builds/converse.js"></script>
</head>
<body>
</body>
<script>
require(['converse'], function (converse) {
converse.initialize({
auto_list_rooms: false,
auto_subscribe: false,
bosh_service_url: 'http://converse:7070/http-bind/',
hide_muc_server: false,
i18n: locales.en,
prebind: false,
show_controlbox_by_default: true,
roster_groups: true
});
});
</script>
</html>
已解决! 问题是房间选项。
有几种方法可以执行 .join 到 MUC(多用户聊天)中,我引用了 Ignite Realtime:
// Create a MultiUserChat using a XMPPConnection for a room MultiUserChat muc2 = new MultiUserChat(conn1, "myroom@conference.jabber.org");
// User2 joins the new room
// The room service will decide the amount of history to send
muc2.join("testbot2");
In this example we can see how to join a room with a given nickname and password:
// User2 joins the new room using a password // The room service will decide the amount of history to send
muc2.join("testbot2", "password");
In this example we can see how to join a room with a given nickname specifying the amount of history to receive:
// User2 joins the new room using a password and specifying // the amount of history to receive. In this example we are requesting the last 5 messages. DiscussionHistory history = new DiscussionHistory(); history.setMaxStanzas(5);
muc2.join("testbot2", "password", history, conn1.getPacketReplyTimeout());
所以我的猜测是 Converse Join 函数仅在第一种方式(只有字符串参数的方式)上格式化,当我在服务器中检查更多选项时,可能要求更多参数的覆盖函数拒绝 converse执行其连接函数的可能性只有一个参数。