Microsoft adds XMPP support to Windows Live Messenger

This are great news for the XMPP community. Microsoft has added XMPP client support to their Windows Live servers. You can read the announcement here.

Microsoft does not support any of the mandatory SASL mechanisms SCRAM, DIGEST-MD5 and PLAIN. Instead they have implemented their own X-MESSENGER-OAUTH2 SASL mechanism. This means that all existing XMPP Software is not able to connect to their server without code changes or updates.

I have updated the MatriX library to support the X-MESSENGER-OAUTH2 SASL mechanism. You can download the latest binary here.

Here is an example how you can connect to Windows Live Messenger with MatriX.
The XMPP domain is messenger.live.com. Microsoft has the proper SRV records, so MatriX discovers the hostname automatically. All you have to do is subscribe to the OnBeforeSasl event and disable the the automatic SASL mechanism selection and choose the X_MESSENGER_OAUTH2 mechanism for authentication. Additional you have to pass SaslProperties which include your access token.

var xmppClient = new XmppClient {XmppDomain = "messenger.live.com"};
xmppClient.OnBeforeSasl += xmppClient_OnBeforeSasl;
xmppClient.Open();

private void xmppClient_OnBeforeSasl(object sender, SaslEventArgs e)
{
	e.Auto = false;

	const string ACCESS_TOKEN = "your_access_token";
	e.SaslMechanism = SaslMechanism.X_MESSENGER_OAUTH2;
	e.SaslProperties = new LiveMessengerProperties
						   {
							   AccessToken = ACCESS_TOKEN
						   };
}

Of course you must retrieve your access token before you can connect with MatriX.

Some additional useful resources from Microsoft:

Professional

Alex from AG-Software is a bright individual who we have worked with on several occasions regarding the implementation of XMPP servers and development understanding in order to introduce the technology into our vehicle tracking solution at that time. He is very professional, hardworking and technically able, I would recommend Alex to anyone thinking of introducing XMPP into their organisation.

Simon Atherton, Tracking By Design

Matrix as made XMPP fun

Matrix has made XMPP fun and easier to develop for windows and ce platform. The sdk as been well thought out and offers a whole host of functions to allow you to become up and running in a very quick time.

Support is not too bad at all, but the forum does provide plenty of answers to common problems so it should be rare to really need any in depth support.

In all I would say that Matrix does offer a great sdk and it will save you many man hours in xmpp development. I do reccomend it and as yet not discovered any major issues.

However still waiting for Alex to finish socks5 encoding. Which i think will add a new dimension to this wonderful product.

Max Parsons, Taximax

We are very impressed

We’ve been running agsxmpp for about 2 years, at the heart of a high volume mission critical application, and I don’t believe we’ve ever had a single error that could be traced back to it. We were very impressed. I’m looking forward immensely to using Matrix instead, as the inability to use standard LINQ was pretty much the only complaint any of us had with the software.

Chris Hagan, Monash University

MatriX status update

I have not posted any updates for a while, which does not mean that there aren’t any.
So what I am working on?

There is huge progress in MatriX. Many of our customers are demanding support for special XEPs and other library extensions. So I have been working very close with them implementing many new XEPs and other useful features. I will create separate blog posts for some of these features.

Windows Phone Mango is coming now with sockets. So I have added sockets to the Windows Phone Mango version which is RTM now.

The port of MatriX to Android using mono for Android is nearly finished. You can expect a beta version very soon. Drop me an email when you are interested to join the beta test.

Whats next? Once the Android version is done I will start to work on a iOS version with MonoTouch.

You will be able to target all major mobile platform and reuse lots of your existing code and business logic.

There was no official release for a while, but the latest stable builds are always located here: http://www.ag-software.net/download-directory/

Windows Phone Mango

Today Microsoft has released the Beta Tools for Mango. Mango delivers many new features to Windows Phone developers. The two features we were waiting for are the following:

  • Background processing
  • Networking / sockets for communications

Now you are also able to use sockets instead of BOSH as transport layer on Windows Phone Mango. And your XMPP apps are able to run in background and keep your XMPP connection alive for listening asynchronous on events. This is a big step forward for XMPP and Instant Messaging apps on Windows Phone.

I have implemented sockets in MatriX for Windows Phone. You can download the MatriX beta release for Mango here.

MatriX 1.4 released

I am happy to announce release 1.4 of the MatriX XMPP libraries. There are many minor and major improvements. Here is a small list of changes

  • Silverlight version updated to Silverlight 4.0
  • added ability in Silverlight to download policies over HTTP instead of sockets (new feature in SL4)
  • try to connect to all hosts in the SRV records and all IP adresses when tehre are multiple addresses assigned (full .NET version only)
  • added DIGEST-MD5 to Silverlight and WP7 version (yes there are still many servers which require this SASL mechanism)
  • added non SASL authentication
  • XEP-0033 extended stanza addressing
You can download the new versions here.

Silverlight updates

From now all upcoming releases of MatriX for Silverlight will be compiled against Silverlight 4 because of improvements in the security policy system.

Since Silverlight 4 a connection request using sockets can choose to retrieve the policy file via the HTTP protocol on TCP port 80 instead of the custom TCP protocol on port 943. Web servers are already running in mosts environments. This makes your setup much easier because you don’t need the special policy server on port 943.

To enable policy download over HTTP use the following code in the latest MatriX for Silverlight version.

XmppClient.DownloadClientAccessPolicyViaHttp = true;

You can read more details about the Network Security Access Restrictions in Silverlight here in the MSDN

SRV Record Tester

Because many Windows users are not familiar with tools like nslookup, dig and SRV records I have created a small GUI tool to lookup XMPP SRV Records on Windows.

You can download the tool from the following link.
http://www.ag-software.net/download/xmpp/SrvTester.zip

The .NET Framework 4 Client Profile is required to run this tool.

Screenshot - SRV Record Tester

Screenshot - SRV Record Tester

XMPP notifications for UNB

The Unclassified NewsBoard (short UNB) ist a great, fast and lightweight forums software which is very easy to extend and customize. I use it for many years now. UNB was the 1st board software with XMPP notifications for new replies in threads or users.

I have written now a small plugin which notifies board admins of new created threads. There is no need to poll the RSS feed every X minutes or hours anymore.

You can find the plugin here.