Klient sieci XMPP/Jabber w JavaScript – Historie zmagań



Klient sieci XMPP/Jabber w JavaScript – Historie zmagań

0 0


meet-js-xmpp-client-slides

meet.js example xmpp client based on JSJaC and scaleApp (slides)

On Github toudi / meet-js-xmpp-client-slides

Klient sieci XMPP/Jabber w JavaScript

toudi a.k.a. Mateusz Mikołajczyk

Czy ktoś powiedział 'chat?'

No nie... kolejne demo chata w node.js... :/

Dostępne biblioteki

Gdzie szukać pomocy?

google :: xmpp jquery (książka)

http://xmpp.org/extensions/xep-0045.html

Historie zmagań

  • Bezpośrednie użycie strophe.js
  • Mootools
  • Nicholas Zakas - scalable application

Bezpośrednie użycie strophe.js

						$(function(){
						    var connection = new Strophe("http://serwer/");

						    $("#login").click(function(){
							        connection.connect( ..., function(status) {

							        } );
						    });

						    connection.
						});
						

Mootools

Abstrakcyjna/bazowa klasa ChatClient

						var XMPPClient = new Class({
						    initialize: function(url) {
						        this.connection = new Strophe(url);
						    },

						    connect: function(jid, password) {
						        var that = this;
						        this.connection.connect( ... , function(status) {
						            that.connected();
						        })
						    }
					});
						

Mootools

Klasa dziedzicząca zawierająca handlery

						var MyXmppClient = new Class({
						    extends: XMPPClient,

						    connected: function() {
						        ....
						    }
					});
						
						

Mootools

Inicjalizacja

						$(function(){
						    var client = new MyXmppClient('http://serwer/');
						});
						

Użycie AMD

scalable js architecture

Wydzielenie modułów

  • connection
  • roster
  • chat

Formy transportu

BOSH / HTTP Binding WebSockety Attach

Porównanie funkcjonalności i wsparcie

0. xmpp-over-websocket NIE wspiera zapisywania stanu

1. ANGTFT == Ain't nobody got time for that!

Biblioteka Dokumentacja Zapisywanie stanu Attach Websockety? strophe.js techniczna + książka 1/10 TAK branche lightstring ANGTFT ? TAK (nadpisywanie rid) TAK JSJAC techniczna + minimalny klient TAK TAK (konstruktor) TAK

Same-origin-policy

					location /xmpp {
			            proxy_read_timeout 320;
			            proxy_send_timeout 320;
			            proxy_connect_timeout 320;
			            proxy_pass http://localhost:5280/http-bind/;
			            proxy_buffering off;
			            tcp_nodelay on;
        			}					
					
Talk is cheap. Show me the code

Linus Torvalds

Dziękuję za uwagę