<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AG-Software</title>
	<atom:link href="http://www.ag-software.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ag-software.net</link>
	<description>XMPP competence and components</description>
	<lastBuildDate>Thu, 09 May 2013 20:59:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>MatriX for WinRT released</title>
		<link>http://www.ag-software.net/2012/11/12/matrix-for-winrt-released/</link>
		<comments>http://www.ag-software.net/2012/11/12/matrix-for-winrt-released/#comments</comments>
		<pubDate>Mon, 12 Nov 2012 19:07:46 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[MatriX]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1572</guid>
		<description><![CDATA[Now with the availability of Windows 8 and the first Windows 8 devices we have released the WinRT version of MatriX to the public. The API and supported features are nearly the same as in all our other MatriX editions. Start to use the power of XMPP in your WinRT apps now!! The WinRT version [...]]]></description>
				<content:encoded><![CDATA[<p>Now with the availability of Windows 8 and the first Windows 8 devices we have released the WinRT version of MatriX to the public.</p>

<p>The API and supported features are nearly the same as in all our other MatriX editions.</p>

<p>Start to use the power of XMPP in your WinRT apps now!!</p>

<p>The WinRT version can be downloaded from here:<br/>
<a class="download" href="http://www.ag-software.net/matrix-xmpp-sdk/download/" title="Download">Download MatriX for WinRT</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2012/11/12/matrix-for-winrt-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web clients with MatriX and SignalR</title>
		<link>http://www.ag-software.net/2012/08/20/web-clients-with-matrix-and-signalr/</link>
		<comments>http://www.ag-software.net/2012/08/20/web-clients-with-matrix-and-signalr/#comments</comments>
		<pubDate>Mon, 20 Aug 2012 20:50:15 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[BOSH]]></category>
		<category><![CDATA[MatriX]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1435</guid>
		<description><![CDATA[Persistent realtime connections for ASP.NET in code behind to the web browser were hard to implement in the past. There hasn&#8217;t been a ASP.NET component for this for a while. With SignalR there is an asynchronous realtime signaling library for ASP.NET now that a team at Microsoft is working on. Using SignalR its pretty easy [...]]]></description>
				<content:encoded><![CDATA[<p>Persistent realtime connections for ASP.NET in code behind to the web browser were hard to implement in the past. There hasn&#8217;t been a ASP.NET component for this for a while.</p>

<p>With <a href="https://github.com/SignalR">SignalR</a> there is an asynchronous realtime signaling library for ASP.NET now that a team at Microsoft is working on. Using <a href="https://github.com/SignalR">SignalR</a> its pretty easy to build real-time web applications.</p>

<p>Using <a href="https://github.com/SignalR">SignalR</a> and <a href="http://www.ag-software.net/matrix-xmpp-sdk/">MatriX</a> its very easy to write scalable XMPP web applications with a very small amount of JavaScript code.</p>

<p><strong><em>Let&#8217;s get started:</em></strong></p>
<p>Create a new ASP.NET MVC web application project first. Then install <a href="https://github.com/SignalR">SignalR</a> using the NuGet Package Console with the following command:</p>

<pre class="brush: plain;">
install-package SignalR
</pre>

<p>This will add <a href="https://github.com/SignalR">SignalR</a> with all required references to the new project we just created.</p>

<p>Now we create a <a href="https://github.com/SignalR/SignalR/wiki/Hubs">Hub</a> for MatriX. <a href="https://github.com/SignalR/SignalR/wiki/Hubs">Hubs</a> are a higher level framework API to exchange different messages between server (code behind) and client (web browser) bidirectional in realtime.</p>

<p>We First implement the IConnected and IDisconnect interfaces to the Hub. Our Hub has a static Dictionary for all XmppClients instances. Whenever a new client connects to the bidirectional realtime channel of <a href="https://github.com/SignalR">SignalR</a> we create a new XmppClient instance for it, setup the event handlers and add the client to the dictionary. When a browser disconnects from <a href="https://github.com/SignalR">SignalR</a> we disconnect all event handlers and remove the XmppClient from the dictionary.</p>

<pre class="brush: csharp;">
public class MatrixHub : Hub, IConnected, IDisconnect
{
    private static readonly Dictionary&lt;string, XmppClient&gt; XmppClients = new Dictionary&lt;string, XmppClient&gt;();

    public Task Disconnect()
    {
        if (XmppClients.ContainsKey(Context.ConnectionId))
        {
            var xmppClient = XmppClients[Context.ConnectionId];

            xmppClient.OnReceiveXml -= xmppClient_OnReceiveXml;
            xmppClient.OnSendXml -= xmppClient_OnSendXml;
            xmppClient.OnMessage -= xmppClient_OnMessage;

            XmppClients.Remove(Context.ConnectionId);
        }

        return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Connect()
    {
        if (!XmppClients.ContainsKey(Context.ConnectionId))
        {
            var xmppClient = new XmppClient();

            xmppClient.OnReceiveXml += xmppClient_OnReceiveXml;
            xmppClient.OnSendXml += xmppClient_OnSendXml;       
            xmppClient.OnMessage += xmppClient_OnMessage;
            
            XmppClients.Add(Context.ConnectionId, xmppClient);
        }

        return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
    }

    public Task Reconnect(IEnumerable&lt;string&gt; groups)
    {
        return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
    }    
}
</pre>

<p>Now we add a <strong>Open</strong> and <strong>Close</strong> function to our Hub which can be executed from the webpage via JavaScript. The JavaScript passes the username, password and XMPP domain as a string to the <strong>Open</strong> function.</p>

<p>Context.ConnectionId is the Id of the JavaScript client calling this Hub. We use this ids for our XmppClient dictionary and need it to lookup the correct XmppClient instance from the dictionary. After retrieving the XmppClient instance we set Username, Password and XmppDomain. Then we call Open() and MatriX starts to login to the XMPP server with the given credentials.</p>

<p>The same applies to the Close function. We first lookup the correct XmppClient and then call Close on it to close the XMPP stream.</p>

<pre class="brush: csharp;">
public void Open(String username, String password, String xmppDomain)
{
    XmppClient xmppClient = XmppClients[Context.ConnectionId];
    xmppClient.Username = username;
    xmppClient.Password = password;
    xmppClient.XmppDomain = xmppDomain;

    xmppClient.Open();
}

public void Close()
{
    XmppClient xmppClient = XmppClients[Context.ConnectionId];
    xmppClient.Close();
}
</pre>

<p>Now we implement the <strong>OnSendXml</strong> and <strong>OnReceiveXml</strong> handlers we subscribed to in the Connect Task. This is server side C# code telling the client to call <strong>sendXml()</strong> and <strong>receiveXml()</strong> JavaScript functions.</p>

<p><strong>Clients</strong> is a dynamic object of <a href="https://github.com/SignalR">SignalR</a>. <strong>Clients[Context.ConnectionId]</strong> gets the correct client and executes the function on this single client only.</p>

<pre class="brush: csharp;">
void xmppClient_OnSendXml(object sender, Matrix.TextEventArgs e)
{
    var text = HttpUtility.HtmlEncode(String.Format(&quot;Send: {0}&quot;, e.Text));
   
    Clients[Context.ConnectionId].sendXml(text);
}

void xmppClient_OnReceiveXml(object sender, Matrix.TextEventArgs e)
{
    var text = HttpUtility.HtmlEncode(String.Format(&quot;Recv: {0}&quot;, e.Text));
   
    Clients[Context.ConnectionId].receiveXml(text);
}
</pre>

<p>The last step before we goto our JavaScript is the <strong>OnMessage</strong> function. <a href="https://github.com/SignalR">SignalR</a> can also send complex objects. So lets create a simple Message class to send the message properties as an object to our JavaScript. The Message class has 2 simple String properties. <strong>Body</strong> for the Text of the message and <strong>From</strong> for the full Jid of the sender.</p>

<pre class="brush: csharp;">
public class Message
{
    public string Body;
    public string From;
}
</pre>

<p>Whenever MatriX receives a message in the <strong>OnMessage</strong> handler we raise the callback <strong>onMessage</strong> in our JavaScript and pass a new instance of the Message object we just created.</p>

<pre class="brush: csharp;">
void xmppClient_OnMessage(object sender, MessageEventArgs e)
{
    Clients[Context.ConnectionId].onMessage(
           new Message
           {
           		From = e.Message.From,
           		Body = e.Message.Body
           }
    );       
}
</pre>

<p>The backend and code behind stuff is done now. Now we have to add JavaScript to our web page to setup the <a href="https://github.com/SignalR">SignalR</a> connection.</p>

<p>First we have to include some JavaScript files. We need jquery, the <a href="https://github.com/SignalR">signalR</a> script and the hubs which get created dynamically by <a href="https://github.com/SignalR">SignalR</a> on the server.</p>

<pre class="brush: xml;">
&lt;script src=&quot;@Url.Content(&quot;~/Scripts/jquery-1.6.4.js&quot;)&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;@Url.Content(&quot;~/Scripts/jquery.signalR-0.5.2.js&quot;)&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; 
&lt;script src=&quot;@Url.Content(&quot;~/signalr/hubs&quot;)&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
</pre>

<p>The following code shows how to create our MatriX Hub in JavaScript and connect it to the <a href="https://github.com/SignalR">SignalR</a> server. <strong>matrixHub</strong> is defined in the dynamically created JavaScript file we added before.</p>

<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot;&gt;
    $(function () {
        var matrixHub = $.connection.matrixHub;
        
		// TODO, callbacks and hub invoker
        
        $.connection.hub.start();
    });
&lt;/script&gt;
</pre>

<p>Now we add the JavaScript code which gets executed when we press the Login and Logout buttons on our wegpage.</p>
<p>The Login button executes the <strong>Open</strong> function in our C# Hub and passes username, password and XmppDomain. The Logout button executes the <strong>Close</strong> function without any parameters.</p>

<p>This is all that has to be done to execute a Hub function from JavaScript in realtime.</p>

<pre class="brush: jscript;">
$(&quot;#loginButton&quot;).click(function () {
    matrixHub.open(
        $(&quot;#txtUsername&quot;).val(),
        $(&quot;#txtPassword&quot;).val(),
        $(&quot;#txtXmppDomain&quot;).val());
});

$(&quot;#logoutButton&quot;).click(function () {
    matrixHub.close();
});
</pre>

<p>The last pieces which are missing are the JavaScript functions we execute form the Hub to send data to the webpage from the server.</p>

<p>The <strong>sendXml</strong> and <strong>readXml</strong> callbacks append the Xml debug to a div. The <strong>onMessage</strong> callbacks appends a incoming message to a div.</p>

<pre class="brush: jscript;">
// signalR callback for outgoing xml debug
matrixHub.sendXml = function (message) {
    $(&quot;#log&quot;).append(&quot;&lt;span class='log send'&gt;&quot; + message + &quot;&lt;/span&gt;&lt;br/&gt;&quot;);
};

// signalR callback for incoming xml debug
matrixHub.receiveXml = function (message) {
    $(&quot;#log&quot;).append(&quot;&lt;span class='log recv'&gt;&quot; + message + &quot;&lt;/span&gt;&lt;br/&gt;&quot;);
};

matrixHub.onMessage = function (msg) {
    $(&quot;#messages&quot;).append(
            &quot;&lt;span class='from'&gt;&quot; + msg.From + &quot;:&lt;/span&gt;&quot; +
            &quot;&lt;span class='message'&gt;&quot; + msg.Body + &quot;&lt;/span&gt;&quot; +
            &quot;&lt;/br&gt;&quot;
    );
};
</pre>

<p><a href="https://github.com/SignalR">SignalR</a> can also send data to all connected clients or a group of clients, but we don&#8217;t need these features.</p>

<p><a href="https://github.com/SignalR">SignalR</a> handles all the connection stuff for the client and the server automatically for us, and keeps the connection always alive. It chooses the right connection technique for your browser and scales on the server with modern async and await techniques.</p>

<p>Under the hood <a href="https://github.com/SignalR">SignalR</a> is using the same techology as <a href="http://xmpp.org/extensions/xep-0124.html">BOSH</a>. On the web server MatriX connects to the XMPP server directly over the default TCP transport. This means you can connect to any XMPP server including Google Talk, Facebook or Windows Live Messenger without using a BOSH proxy from your web page.</p>

<p>The complete example is included in the latest <a href="http://www.ag-software.net/matrix-xmpp-sdk/download/">MatriX download</a> or can be downloaded from here:<br/>
<a href="http://db.tt/2vzfoQUk">http://db.tt/2vzfoQUk</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2012/08/20/web-clients-with-matrix-and-signalr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MatriX for WinRT</title>
		<link>http://www.ag-software.net/2012/05/22/matrix-for-winrt/</link>
		<comments>http://www.ag-software.net/2012/05/22/matrix-for-winrt/#comments</comments>
		<pubDate>Tue, 22 May 2012 14:10:31 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[MatriX]]></category>
		<category><![CDATA[Metro]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[WinRT]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1370</guid>
		<description><![CDATA[Windows 8 with the new Metro UI is coming soon. We were working hard in the last weeks to port MatriX also to WinRT. Because WinRT is only a subset of the full .NET Framework and introduces many new techniques, namespaces and classes we had to rewrite lots of our code. We are happy to [...]]]></description>
				<content:encoded><![CDATA[<p>Windows 8 with the new Metro UI is coming soon. We were working hard in the last weeks to port MatriX also to WinRT. Because WinRT is only a subset of the full .NET Framework and introduces many new techniques, namespaces and classes we had to rewrite lots of our code. We are happy to announce that a Beta version of <strong>MatriX for WinRT</strong> is available now.</p>

<p>Please <a href="http://www.ag-software.net/contact/">contact us</a> when you are interested at the beta version.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2012/05/22/matrix-for-winrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BOSH prebind in MatriX and attach to Strophe</title>
		<link>http://www.ag-software.net/2012/01/31/bosh-prebind-in-matrix-and-attach-to-strophe/</link>
		<comments>http://www.ag-software.net/2012/01/31/bosh-prebind-in-matrix-and-attach-to-strophe/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 15:04:54 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[BOSH]]></category>
		<category><![CDATA[MatriX]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1271</guid>
		<description><![CDATA[Why prebind and attach? When your web application is already logged in and needs to establish a XMPP connection you have a seamless and secure solution with prebind and attach. You don&#8217;t have to ask the user to provide the credentials again, and you don&#8217;t have to render the credentials insecure in your HTML output. [...]]]></description>
				<content:encoded><![CDATA[<h3>Why prebind and attach?</h3>
<p>When your web application is already logged in and needs to establish a XMPP connection you have a seamless and secure solution with <strong>prebind</strong> and <strong>attach</strong>. You don&#8217;t have to ask the user to provide the credentials again, and you don&#8217;t have to render the credentials insecure in your HTML output.</p>

<h3>Prebind with MatriX</h3>
<p>This code shows how to prebind a session with MatriX. On success MatriX raises the OnPrebind event and provides the <strong>Jid</strong>, <strong>Rid</strong> and <strong>Sid</strong> in the PrebindEventArgs. The Rid is the last one used by MatriX and must be incremented before getting passed to <a href="http://strophe.im/strophejs/" title="Strophe.js" target="_blank">Strophe</a>.<br/>
You can render this params in a new page and attach the session with <a href="http://strophe.im/strophejs/" title="Strophe.js" target="_blank">Strophe</a>.</p>

<pre class="brush: csharp;">
var xmppClient = new XmppClient
{
	Username = &quot;testuser&quot;,
	XmppDomain = &quot;ag-software.de&quot;,
	Password = &quot;secret&quot;,
	Transport = Matrix.Net.Transport.BOSH,
	Uri = new System.Uri(&quot;http://ag-software.de/http-bind/&quot;)
};

// subscribe to the prebind event
xmppClient.OnPrebind += client_OnPrebind;

void client_OnPrebind(object sender, PrebindEventArgs e)
{
	prebindArgs = e;
	are.Set();
}
// start prebinding with MatriX now
xmppClient.Prebind();
</pre>

<p>You can download a complete ASP .NET example project here:<br/>
<a class="download" href='http://www.ag-software.net/wp-content/uploads/2012/01/BoshPrebindAndAttachWithStrophExample.zip'>Bosh Prebind Example</a>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2012/01/31/bosh-prebind-in-matrix-and-attach-to-strophe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MatriX XMPP library for iOS and Android available</title>
		<link>http://www.ag-software.net/2012/01/07/matrix-xmpp-library-for-ios-and-android-available/</link>
		<comments>http://www.ag-software.net/2012/01/07/matrix-xmpp-library-for-ios-and-android-available/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 20:47:35 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[Andoid]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MatriX]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1254</guid>
		<description><![CDATA[MatriX XMPP library for iOS and Android is in Beta status now. Both versions are based on MonoTouch and Mono for Android from Xamarin. Using this technology you can easily port your existing MatriX based c# XMPP apps to iOS and Android and resuse most of your existing code and business logic. When you are [...]]]></description>
				<content:encoded><![CDATA[<p>MatriX XMPP library for iOS and Android is in Beta status now. Both versions are based on <a href="http://xamarin.com/monotouch">MonoTouch</a> and <a href="http://xamarin.com/monoforandroid">Mono for Android</a> from <a href="http://xamarin.com/">Xamarin</a>.</p>

<p>Using this technology you can easily port your existing <a href="http://www.ag-software.net/matrix-xmpp-sdk/">MatriX</a> based c# XMPP apps to iOS and Android and resuse most of your existing code and business logic.</p>

<p>When you are interested in Beta testing then please <a href="http://www.ag-software.net/contact/" title="Contact">contact us</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2012/01/07/matrix-xmpp-library-for-ios-and-android-available/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Microsoft adds XMPP support to Windows Live Messenger</title>
		<link>http://www.ag-software.net/2011/12/15/microsoft-adds-xmpp-support-to-windows-live-messenger/</link>
		<comments>http://www.ag-software.net/2011/12/15/microsoft-adds-xmpp-support-to-windows-live-messenger/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 13:01:56 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[dotNet]]></category>
		<category><![CDATA[MatriX]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=1224</guid>
		<description><![CDATA[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 [...]]]></description>
				<content:encoded><![CDATA[<p>This are great news for the XMPP community. Microsoft has added XMPP client support to their Windows Live servers. You can <a href="http://windowsteamblog.com/windows_live/b/windowslive/archive/2011/12/14/anyone-can-build-a-windows-live-messenger-client-with-open-standards-access-via-xmpp.aspx">read the announcement here</a>.</p>

<p>Microsoft does not support any of the <a href="http://xmpp.org/rfcs/rfc6120.html#security-mti" title="mandatory to implement SASL mechanisms">mandatory SASL mechanisms</a> 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.</p>

<p>I have updated the <a href="http://www.ag-software.net/matrix-xmpp-sdk/">MatriX library</a> to support the X-MESSENGER-OAUTH2 SASL mechanism. You can download the latest binary <a href="http://www.ag-software.net/download-directory/" title="latest downloads">here</a>.
</p>

<p>Here is an example how you can connect to Windows Live Messenger with MatriX.<br/>
The XMPP domain is <strong>messenger.live.com</strong>. Microsoft has the proper SRV records, so MatriX discovers the hostname automatically. All you have to do is subscribe to the <strong>OnBeforeSasl</strong> 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.</p>

<pre class="brush: csharp;">
var xmppClient = new XmppClient {XmppDomain = &quot;messenger.live.com&quot;};
xmppClient.OnBeforeSasl += xmppClient_OnBeforeSasl;
xmppClient.Open();

private void xmppClient_OnBeforeSasl(object sender, SaslEventArgs e)
{
	e.Auto = false;

	const string ACCESS_TOKEN = &quot;your_access_token&quot;;
	e.SaslMechanism = SaslMechanism.X_MESSENGER_OAUTH2;
	e.SaslProperties = new LiveMessengerProperties
						   {
							   AccessToken = ACCESS_TOKEN
						   };
}
</pre>

<p>Of course you must <a href="http://msdn.microsoft.com/de-de/windowslive/hh278363">retrieve your access token</a> before you can connect with MatriX.</p>

<p>Some additional useful resources from Microsoft:</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/windowslive/hh561460">Getting started using Messenger with XMPP</a></li>
<li><a href="http://msdn.microsoft.com/de-de/windowslive/hh278363">Signing users in</a></li>
<li><a href="http://msdn.microsoft.com/de-de/windowslive/hh278360">Getting a client ID and configuring your app</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/hh243647.aspx">OAuth 2.0</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2011/12/15/microsoft-adds-xmpp-support-to-windows-live-messenger/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>MatriX status update</title>
		<link>http://www.ag-software.net/2011/09/27/matrix-status-update/</link>
		<comments>http://www.ag-software.net/2011/09/27/matrix-status-update/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 09:25:51 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[Andoid]]></category>
		<category><![CDATA[dotNet]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[MatriX]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=717</guid>
		<description><![CDATA[I have not posted any updates for a while, which does not mean that there aren&#8217;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 [...]]]></description>
				<content:encoded><![CDATA[<p>I have not posted any updates for a while, which does not mean that there aren&#8217;t any.<br/>
So what I am working on?</p>

<p>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.</p>

<p><strong>Windows Phone Mango</strong> is coming now with sockets. So I have added sockets to the Windows Phone Mango version which is RTM now.</p>

<p>The port of MatriX to <strong>Android</strong> using <a href="http://android.xamarin.com/">mono for Android</a> is nearly finished. You can expect a beta version very soon. Drop me an email when you are interested to join the beta test.</p>

<p>Whats next? Once the Android version is done I will start to work on a <strong>iOS</strong> version with <a href="http://ios.xamarin.com/">MonoTouch</a>.</p>

<p>You will be able to target all major mobile platform and reuse lots of your existing code and business logic.</p>

<p>There was no official release for a while, but the latest stable builds are always located here:
<a href="http://www.ag-software.net/download-directory/">http://www.ag-software.net/download-directory/</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2011/09/27/matrix-status-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Phone Mango</title>
		<link>http://www.ag-software.net/2011/05/25/windows-phone-mango/</link>
		<comments>http://www.ag-software.net/2011/05/25/windows-phone-mango/#comments</comments>
		<pubDate>Wed, 25 May 2011 19:58:37 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[MatriX]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=686</guid>
		<description><![CDATA[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 [...]]]></description>
				<content:encoded><![CDATA[<p>Today Microsoft has released the <a href="http://windowsteamblog.com/windows_phone/b/wpdev/archive/2011/05/24/developer-news-beta-mango-tools-available-today.aspx">Beta Tools for Mango</a>. Mango delivers many new features to Windows Phone developers. The two features we were waiting for are the following:</p>
<ul>
	<li>Background processing</li>
	<li>Networking / sockets for communications</li>
</ul>

<p>Now you are also able to use sockets instead of <a href="http://xmpp.org/extensions/xep-0124.html">BOSH</a> 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.</p>

<p>I have implemented sockets in MatriX for Windows Phone. You can download the MatriX beta release for Mango <a href="http://www.ag-software.net/download-directory/">here</a>.</p>




]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2011/05/25/windows-phone-mango/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>MatriX 1.4 released</title>
		<link>http://www.ag-software.net/2011/03/25/matrix-1-4-released/</link>
		<comments>http://www.ag-software.net/2011/03/25/matrix-1-4-released/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 19:45:54 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[MatriX]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=613</guid>
		<description><![CDATA[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 [...]]]></description>
				<content:encoded><![CDATA[<p>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</p>
<ul>
	<li>Silverlight version updated to Silverlight 4.0</li>
	<li>added ability in Silverlight to download policies over HTTP instead of sockets (new feature in SL4)</li>
	<li>try to connect to all hosts in the SRV records and all IP adresses when tehre are multiple addresses assigned (full .NET version only)</li>
	<li>added DIGEST-MD5 to Silverlight and WP7 version (yes there are still many servers which require this SASL mechanism)</li>
	<li>added non SASL authentication</li>
	<li>XEP-0033 extended stanza addressing</li>
</ul>
You can download the new versions <a href="http://www.ag-software.net/matrix-xmpp-sdk/download/">here</a>.]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2011/03/25/matrix-1-4-released/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Silverlight updates</title>
		<link>http://www.ag-software.net/2011/01/29/silverlight-updates-2/</link>
		<comments>http://www.ag-software.net/2011/01/29/silverlight-updates-2/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 10:08:26 +0000</pubDate>
		<dc:creator>gnauck</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.ag-software.de/?p=604</guid>
		<description><![CDATA[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. [...]]]></description>
				<content:encoded><![CDATA[<p>From now all upcoming releases of <a href="/matrix-xmpp-sdk">MatriX</a> for Silverlight will be compiled against Silverlight 4 because of improvements in the security policy system.</p>

<p>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&#8217;t need the special policy server on port 943.</p>

<p>To enable policy download over HTTP use the following code in the latest <a href="/matrix-xmpp-sdk/">MatriX</a> for Silverlight version.</p>

<pre class="brush: csharp;">
XmppClient.DownloadClientAccessPolicyViaHttp = true;
</pre>

<p>You can read more details about the Network Security Access Restrictions in Silverlight <a href="http://msdn.microsoft.com/en-us/library/cc645032(v=vs.95).aspx">here in the MSDN</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.ag-software.net/2011/01/29/silverlight-updates-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.274 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-24 04:22:39 -->

<!-- Compression = gzip -->