powered by Jive Software

Xiff conference example fails !?

Hi There,

I’'m running Jive 2.1.2 (windows and linux)

and I’'m trying to get the conference example running.

I can login, but when I join a chatroom there’'s seems to be no response from the server.

When I look at the Jive admin page I can see that I DID join the room. But there’'s just no response to the presence-Stanza…

here’'s some debug output: (I have hidden servername and userdata)

<?xml version="1.0"?><flash:stream to="myserver.net" xmlns="jabber:client" xmlns:flash="http://www.jabber.com/streams/flash" version="1.0">
RECV: <?xml version=''1.0'' encoding=''UTF-8''?><flash:stream xmlns:flash="http://www.jabber.com/streams/flash" xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" from="localhost" id="a7b4bca7" xml:lang="en" />
SENT: <iq id="log_user_1" type="get"><query xmlns="jabber:iq:auth"><username>aname</username></query></iq>
RECV: <iq type="result" id="log_user_1"><query xmlns="jabber:iq:auth"><username>aname</username><password /><digest /><resource /></query></iq>
SENT: <iq id="log_user2_3" type="set"><query xmlns="jabber:iq:auth"><password>apass</password><username>aname</username><resource>xiff</resource></query></iq>
RECV: <iq type="result" id="log_user2_3" to="auser@myhost/xiff" />
SENT: <presence to="roomname@conference.myserver.net/nickname"><x xmlns="http://jabber.org/protocol/muc" /></presence>

Now the example works just fine on jabberd 1.4.2

Only difference is that with jabberd 1.4.2 I use :

connection.connect();

to connect

and with jive I have to use:

connection.connect(“flash”);

The roster example works fine by the way…

The XMPP-example does seem to work on the Windows-version

of jive 2.1.2

So I’'m puzzled…

Has anyone had the same problem or know a solution?

regards Gepatto

Gepatto,

I just looked at the conference.as example and noticed that it’'s not setting a roster, which is required (i think - need to check the spec). I added the following two lines after the var chatRoom = new Room(connection) statement, and removed the “chatRoster.dataProvider = chatRoom;” statement.

var myRoster:Roster = new Roster(connection);

myRoster.setPresence(null, “Online”, 5);

Also added the following imports:

import org.jivesoftware.xiff.im.Roster;

import org.jivesoftware.xiff.data.*;

And finally added the following line to put the user name into the chatRoster field in the Login event after the join statement:

chatRoster.addItem( connection.username );

Now if, I can only get it to actually respond to sending a message

I have an example in Flex that is based off this code, so I will attempt to get a flash example fully functional in the first 2.0 release. I’'m trying to automate the build and documentation generation at this point.

Hi Barry,

Thnx for your answer. I found antoher xmpp-example that is quite close to the answer you gave me. It’'s running beautifully. I can chat in a room with other flash and non-flash clients.

Now to figure out how to add custom data to a message like moods and maybe coordinates, I haven’‘t found any examples on how to use org.jivesoftware.xiff.data.Extension. If I figure it I’'ll be happy to make a sample application and release it here…

gepatto,

Are you referring to the “yet another flash example”? I’'d like to make sure we have a good flash example in the build.

Any contribution to the examples would be great as well as testing the other classes in the library. Thanks!

Hi gepatto, unfortunately there aren’'t really any examples or docs on the extension architecture yet.

The best thing to do right now is look at the existing extensions - the simplist one is probably the XHTMLExtension. Others are the whiteboarding extensions.

If you have questions I can explain more in detail here.

Hi Barry - Actually, the Room class has its own built-in roster, so you shouldn’'t need to use a separate Roster class. It uses the DataProvider API for interfacing.

I saw that, but wasn’'t able to get it working…do you have an example?

Well, the ConferenceTest.as used to work perfect with jabberd 1.4.2, but I’'ll need to try with Jive.

The line

chatRoster.dataProvider = chatRoom;

that you removed sets the data provider of the data grid I use to display the room’'s roster - its what links the UI to the data. Perhaps the nomenclature I used was confusing.

See line 37

// Attach the grid used for the room roster

this.attachMovie( “DataGrid”, “chatRoster”, curDepth++ );

I’'m guessing that once again this has to do with how Flex handles data providers, which is probably a different interface than the one that ships with Flash. Just like the other Roster problem.

Hmmm…i saw that and it didn’‘t work on my implementation of Jive Messenger 2.1.2. That’'s why I took it out and added the other roster code (which did work).

I was testing this in Flash and not Flex, but will try your ConferenceTest.as in Flex to see if it behaves the same.

Barry,

Yes I was referring to the “yet another flash example”?

I am now working on merging the UI of ConferenceTest with the code of ‘‘yet another flash example’’.

I am gonna test the orginal ConferenceTest.as a little more, because it’'s strange that it does work on jabber1.4.2 and the windows version of jive2.1.2 but not the linux version.

at least here it doesn’‘t. I’'ll keep you updated…

Sean

I am thinking of putting together an example that doesn’‘t look a normal text-chat but more like the character chat’‘s you see everywhere, but I still want it to be compliant with ‘‘normal’’ jabber clients (they just won’‘t handle the extra data). I haven’‘t figured your whole XIFF class-structure out yet, but I’'ll have a look at the XHTML an whiteboard-Extension.

thnx

i’'d be glad if you could post a simple example of usage whiteboarding extensions

Hi gepatto,

i would like to get hold of the “yet another flash example” you are mentioning above.

i think i have the same problem you had. im using jive messenger on linux.

thanks!

hey guys, i sorted out my own problem.

silly mistake though:

changed:

chatRoom.conferenceServer = “127.0.0.1”;

to:

chatRoom.conferenceServer = “conference.127.0.0.1”;

where conference is the Group Chat Service Name in the Jive admin console

works with: XIFFExample that comes with XIFF API