我设法让一个converse.js v.0.9.0客户端使用我在Debian机器上的openfire服务器。
连接工作得很好,我已经创建了几个用户来测试一切,一切正常,我可以登录,在用户之间进行私密对话甚至创建房间,单击“列表房间”时列出的正确“按钮。
问题出现在用户想要加入另一个用户创建的房间时。执行此操作时,具有房间名称的窗口正确弹出,但该房间中的用户列表为空并且根本不存在通信(没有人可以在该房间看到彼此的消息)。
我查看了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>
答案 0 :(得分:0)
解决! 问题是房间选择。
有几种方法可以执行.join进入MUC(多用户聊天)我引用Ignite Realtime:
//为房间创建一个使用XMPPConnection的MultiUserChat MultiUserChat muc2 = new MultiUserChat(conn1,“myroom@conference.jabber.org”);
// User2加入新房间
//客房服务将决定要发送的历史记录数量
muc2.join("testbot2");
在此示例中,我们可以看到如何使用给定的昵称和密码加入房间:
// User2使用密码加入新房间 //客房服务将决定发送的历史记录数量
muc2.join("testbot2", "password");
在此示例中,我们可以看到如何使用指定要接收的历史记录数量的给定昵称加入房间:
// User2使用密码加入新房间并指定 //要接收的历史数量。在此示例中,我们请求最后5条消息。 讨论历史历史=新的讨论历史(); history.setMaxStanzas(5);
muc2.join("testbot2", "password", history, conn1.getPacketReplyTimeout());
所以我的猜测是Converse Join函数只在第一种方式(只有字符串参数的那个)上形成,当我检查服务器中的其他选项时,可能要求更多参数的覆盖函数否定了相反的可能性执行它的连接函数只有一个参数。