如何使用JsJac实现群聊(MUC)?

时间:2010-04-13 08:43:40

标签: xmpp

我正在寻找使用XMPP javascript库JSJac实现群聊的示例代码。

2 个答案:

答案 0 :(得分:1)

刚刚使用XMPP与muckl 4.4和OpenFire完成群聊。关键问题是启动并运行反向代理。由于JSJac在许多情况下使用http-bind,因此您必须与http-bind服务器进行通信。这些服务器通常位于与提供javascript文件的Web服务器不同的端口上。

这会导致跨域违规,但无法正常工作。这是一个讨论它的好链接: http://www.enavigo.com/2008/10/14/setting-up-jsjac-with-openfire-352/

答案 1 :(得分:1)

假设您已经连接到jabber(con),这里有一个关于如何连接群聊的简单示例。

//Set the JID with resource
//Example: my_username@my_domain/my_chat_client
var u_jid = "my_username@my_domain/my_chat_client"

//Set the Full Room ID with your username as the resource
//Example: room_name@conference.my_domain/my_username
var full_room_id = "room_name@conference.my_domain/my_username";

var joinPacket = new JSJaCPresence();
joinPacket.setTo(full_room_id);

//Build item affiliation element
var inode = joinPacket.buildNode("item");
inode.setAttribute("affiliation","none");
inode.setAttribute("jid",u_jid);
inode.setAttribute("role","participant");

//Build X Element (with item affiliation child)
var xnode = joinPacket.buildNode("x", [inode]);
xnode.setAttribute("xmlns", "http://jabber.org/protocol/muc#user");

//Append new nodes to join packet
joinPacket.appendNode(xnode);

//Set status in room
joinPacket.setStatus('available');

var success = con.send(joinPacket, function(data) { console.log(data.getDoc()); });