Wednesday, January 16, 2008

Thursday, January 10, 2008

Registering a user with OpenFire & XMPP AS3 - XIFF

Registering a user with OpenFire & XMPP AS3

Using the XIFF XMPPSocketConnection Class -

I'm a big fan of the bare minimum when it comes to development examples. Show me the very basic mechanics of something and I can do just about anything with it. This is my attempt to show the bare minimum connection mechanisms to connect to an XMPP Server such as OpenFire using the XIFF Library for AS3.

We're using Flex 3 Beta 3 for our client:





import org.igniterealtime.xiff.core.XMPPSocketConnection;
import mx.controls.Alert;
import org.igniterealtime.xiff.core.XMPPConnection;
import org.igniterealtime.xiff.events.RegistrationFieldsEvent;
import org.igniterealtime.xiff.events.*;
import org.igniterealtime.xiff.events.RegistrationSuccessEvent;
import mx.managers.PopUpManager;

private var _conn:XMPPSocketConnection;
private var _regdata:Object;
private var _doRegister:Boolean;
private var DEFAULT_SERVER_LOCATION:String = "64.22.75.39";

internal function init():void {

}

internal function onConnectBut():void {

_conn = new XMPPSocketConnection();
_conn.addEventListener(ConnectionSuccessEvent.CONNECT_SUCCESS,onConnectSuccess);
/* _conn.addEventListener(XIFFErrorEvent.XIFF_ERROR,onError);
_conn.addEventListener(OutgoingDataEvent.OUTGOING_DATA,onOutgoingData)
_conn.addEventListener(IncomingDataEvent.INCOMING_DATA,onIncomingData);
_conn.addEventListener(DisconnectionEvent.DISCONNECT,onDisconnect);
_conn.addEventListener(LoginEvent.LOGIN,onLogin);
_conn.addEventListener(RegistrationFieldsEvent.REG_FIELDS, onRegistrationFields); */
_conn.addEventListener(RegistrationSuccessEvent.REGISTRATION_SUCCESS, onRegistrationSuccess);
_conn.server = DEFAULT_SERVER_LOCATION;
_conn.connect("standard");

_doRegister = true;

_conn.username = null;
_conn.password = null;

_regdata = {};
_regdata.username = username.text;
_regdata.password = password.text;

}


internal function onConnectSuccess( e:ConnectionSuccessEvent ):void
{
if (_doRegister)
{
_conn.sendRegistrationFields( _regdata, null );
}
}

internal function onRegistrationSuccess(e:RegistrationSuccessEvent) : void
{
// Registration successful. Now connect normally.
_conn.disconnect();
/* onConnectClick(); */
// alert the user
var win:GeneralPopup = new GeneralPopup();
win.message = "Registration was successful.";
PopUpManager.addPopUp(win,this);
PopUpManager.centerPopUp(win);

}

]]>














If successful you should see a popup.

Way to go, you're well on your way to creating your own interactive community.