IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

https://os.alfajango.com/websockets-slides/#/

WebSocket is a protocol providing full-duplex communication channels over a single TCP connection.

El protocol WebSocket va ser estandarditzat per la IETF al 2011 mitjançant el RFC 6455 i la llibreria WebSocket API a Web IDL es gestionat pel W3C.

Vegeu també socket.io

Introducció

WebSocket is designed to be implemented in web browsers and web servers, but it can be used by any client or server application. The WebSocket Protocol is an independent TCP-based protocol.

Its only relationship to HTTP is that its handshake is interpreted by HTTP servers as an Upgrade requestThe WebSocket protocol makes more interaction between a browser and a website possible, facilitating live content and the creation of real-time games.

This is made possible by providing a standardized way for the server to send content to the browser without being solicited by the client, and allowing for messages to be passed back and forth while keeping the connection open. 

In this way a two-way (bi-directional) ongoing conversation can take place between a browser and the server. The communications are done over TCP port number 80, which is of benefit for those environments which block non-web Internet connections using a firewall.

Similar two-way browser-server communications have been achieved in non-standardized ways using stopgap technologies such as Comet.

El protocol WebSocket és suportat actualment a la majoria de navegador moderns (--acacha (discussió) 07:48, 23 oct 2015 (CEST)) com Google Chrome, Internet Explorer, Firefox, Safari i Opera. El protocol WebSocket requereix de tecnologies a la part de servidor per funcionar correctament

Història i el problema de les connexions de baixa latència

font: http://www.html5rocks.com/es/tutorials/websockets/basics/
http://howtonode.org/websockets-socketio Interessant exemple amb tècniques prèvies per aconseguir comunicacions en "temps real"

El problema: conexiones de baja latencia cliente-servidor y servidor-cliente

Internet se ha creado en gran parte a partir del llamado paradigma solicitud/respuesta de HTTP. Un cliente carga una página web y no ocurre nada hasta que el usuario hace clic en la página siguiente. Allá por 2005, AJAX empezó a hacer que Internet pareciera más dinámico. Aún así, todas las comunicaciones HTTP eran dirigidas por el cliente, lo que requería la interacción del usuario o hacía necesario preguntarle periódicamente cada vez que se cargaban nuevos datos del servidor.

Hace ya algún tiempo que existen tecnologías que permiten al servidor enviar datos al cliente en el mismo momento que detecta que hay nuevos datos disponibles. Se conocen como "Push" o "Comet". Uno de los trucos más comunes para crear la ilusión de una conexión iniciada por el servidor se denomina Long Polling (sondeo largo). Con el Long Polling, el cliente abre una conexión HTTP con el servidor, el cual la mantiene abierta hasta que se envíe una respuesta. Cada vez que el servidor tenga datos nuevos, enviará la respuesta (otras técnicas implican Flash, solicitudes XHR de varias partes y los denominados htmlfiles). El Long Polling y las otra técnicas funcionan bastante bien. Se utilizan todos los días en aplicaciones como el chat de Gmail.

Sin embargo, todas estas soluciones comparten un problema: el exceso del HTTP, lo que no las hace aptas para aplicaciones de baja latencia. Piensa por ejemplo en los juegos multijugador de tiro en primera persona del navegador o en cualquier otro juego online con un componente en tiempo real.

Introducción a los WebSockets: incorporación de sockets a la Web

La especificación WebSocket define un API que establece conexiones "socket" entre un navegador web y un servidor. Dicho con otras palabras: existe una conexión persistente entre el cliente y el servidor, y ambas partes pueden empezar a enviar datos en cualquier momento.

Tècniques Ajax per simular temps /real

Poll exemple:

setInterval(function(){
    $.ajax({ url: '/my/page', success: function(data){
        // do something with the data
    } });
}, 5000);

Long polling:

function load(){
    $.ajax({ url: '/my/page', success: function(){
        // do something with the data
    }, complete: load, timeout: 20000 });
}

Amb node.js va apareixer la possibilitat de crear servidors web amb Javascript:

http.createServer(function (request, response) {
    setTimeout(function(){
        response.writeHead(200, {'Content-Type': 'text/plain'});
      response.end('Hello World\n');
    }, 20000);
}).listen(8124);

Però encara teniem el problema de fer els clients per a multiples plataformes (navegadors). Això ho soluciona socket.io que permet una mateixa interficie per a totes les plataformes i per darrera s'executa un implementació pròpia per a cada cas.

Llenguatges de programació

Javascript

A Javascript podeu utilitzar:

PHP socket libraries

A PHP podeu utilitzar:

Exemples

https://www.websocket.org/demos.html

Vegeu també

Enllaços externs

http://www.html5rocks.com/es/tutorials/websockets/basics/