"Hvis vi ikke var begrænset af http-protokollen, hvilken type web-applikationer ville vi så udvikle?"
Det spørgsmål stiller Jonas Jacobi fra firmaet Kaazing, i starten af sin præsentation "Breaking barriers with HTML5 communication - How to enable a stateful web" på JAOO-konferencens første dag.
I dag er typen af web-applikationer begrænset af HTTP-protokollens forespørgsel-svar model, hvor browseren sender en forespørgsel indeholdende data til en webserver, der svarer ved at sende en html-side ud til browseren.
Det er et tilbageskridt i forhold til traditionelle klient-serverapplikationer i et lokalnet, hvor serveren kunne sende data til en klient, mens klienten sendte data til serveren. Samtidigt.
Det sker ved hjælp af TCP sockets.
Der har været forsøgt forskellige krumspring for at simulere, at der er en fast forbindelse mellem webbrowseren og webserveren, hvor data uhindret kan sendes frem og tilbage samtidigt.
Det har dog ikke været optimale løsninger, mener Jonas Jacobi.
Eksempelvis AJAX, der giver mulighed for, at browseren udveksler data med webserveren eksempelvis ved hjælp af xmlhttprequest, mens brugeren eksempelvis indtaster data i en webside.
Her indeholder hver enkelt forespørgsel og svar en del ekstra bytes.
Der har også været lavet forsøg med diverse push-løsninger, der dog var baseret på proprietære protokoller.
"Half-duplex arkitekturen betyder, at der skal laves meget "plumbing", når klient og server skal forbindes," siger Jonas Jacobi.
WebSockets giver distribueret client/server-arkitektur
Det er i standardorganisationen W3C's HTML 5-specifikation at man finder en mulighed for at bryde de snærende http-bånd. Her finder man WebSocket API'et og hos IETF finder man WebSocket protokollen.
Med WebSockets er der mulighed for at etablere to-vejskommunikation over en WebSocket, hvilket ifølge Jonas Jacobi betyder en stor ændring for webapplikationer.
"Med WebSockets får man en ægte distribueret client/server-arkitektur," mener Jonas Jacobi.
Samtidig undgår man ifølge Jonas Jacobi at komme i karambolage med firewalls og lignende med WebSocket, da HTTP Connect anvendes til den indledende etablering af WebSocket-forbindelsen.
For at WebSockets kan tages i anvendelse, kræver det, at browseren og serveren understøtter WebSocket.
På browsersiden forventes Webkit, der anvendes i Chrome og Safari, snart at understøtte WebSocket, ligesom Firefox også ventes klar inden længe.
Derfor har Kaazing udviklet deres eget Javascript API, der kan anvendes indtil det bliver indbygget som standard i browserne.
Med Kaazings tilføjelse kan gamle browsere som IE 5.5 og tidlige versioner af Firefox understøttes.
På serversiden er det indtil videre kun Kaazings gateway-server, der er i stand til at håndtere WebSocket.
Serveren skal være i stand til at modtage en forespørgsel om at opgradere fra http til WebSocket. Når det sker, ændres protokol-præfikset fra http: til ws:
Der findes også en secure WebSockets, der anvender ssl. Her er protokol-præfikset wss:
TCP-protokoller kører på WebSocket
Fordelen med WebSockets er, at enhver TCP-baseret protokol kan anvendes ovenpå WebSockets. Det giver mulighed for eksempelvis at anvende af Java Message Service (JMS), Advanced Message Queueing Protocol (AMQP), Streaming Text Orientated Message Protocol (STOMP) mellem browseren og serveren.
I sin afrunding giver Jonas Jacobi den nærmest revolutionerende melding, at "WebSockets vil forandre alting".