HTML5 - WebSockets
WebSockets é uma tecnologia de comunicação bidirecional de próxima geração para aplicativos da web que opera em um único soquete e é exposta por meio de uma interface JavaScript em navegadores compatíveis com HTML 5.
Depois de obter uma conexão Web Socket com o servidor web, você pode enviar dados do navegador para o servidor chamando um send() método e receber dados do servidor para o navegador por um onmessage manipulador de eventos.
A seguir está a API que cria um novo objeto WebSocket.
var Socket = new WebSocket(url, [protocal] );
Aqui, o primeiro argumento, url, especifica o URL ao qual se conectar. O segundo atributo, protocolo, é opcional e, se presente, especifica um subprotocolo que o servidor deve suportar para que a conexão seja bem-sucedida.
Atributos WebSocket
A seguir estão os atributos do objeto WebSocket. Assumindo que criamos o objeto Socket conforme mencionado acima -
Sr. Não. | Atributo e descrição |
---|---|
1 | Socket.readyState O atributo readonly readyState representa o estado da conexão. Pode ter os seguintes valores -
|
2 | Socket.bufferedAmount O atributo readonly bufferedAmount representa o número de bytes de texto UTF-8 que foram enfileirados usando o método send (). |
Eventos WebSocket
A seguir estão os eventos associados ao objeto WebSocket. Assumindo que criamos o objeto Socket conforme mencionado acima -
Evento | Manipulador de Eventos | Descrição |
---|---|---|
abrir | Socket.onopen | Este evento ocorre quando a conexão de soquete é estabelecida. |
mensagem | Socket.onmessage | Este evento ocorre quando o cliente recebe dados do servidor. |
erro | Socket.onerror | Este evento ocorre quando há algum erro na comunicação. |
Fechar | Socket.onclose | Este evento ocorre quando a conexão é fechada. |
Métodos WebSocket
A seguir estão os métodos associados ao objeto WebSocket. Assumindo que criamos o objeto Socket conforme mencionado acima -
Sr. Não. | Método e Descrição |
---|---|
1 | Socket.send() O método send (data) transmite dados usando a conexão. |
2 | Socket.close() O método close () seria usado para encerrar qualquer conexão existente. |
Exemplo WebSocket
Um WebSocket é um soquete TCP bidirecional padrão entre o cliente e o servidor. O soquete começa como uma conexão HTTP e então "atualiza" para um soquete TCP após um handshake HTTP. Após o handshake, qualquer um dos lados pode enviar dados.
Código HTML e JavaScript do lado do cliente
No momento em que este tutorial foi escrito, havia apenas alguns navegadores da web com suporte à interface WebSocket (). Você pode tentar o exemplo a seguir com a versão mais recente do Chrome, Mozilla, Opera e Safari.
<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
function WebSocketTest() {
if ("WebSocket" in window) {
alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function() {
// Web Socket is connected, send data using send()
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function() {
// websocket is closed.
alert("Connection is closed...");
};
} else {
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id = "sse">
<a href = "javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>
Instalar pywebsocket
Antes de testar o programa cliente acima, você precisa de um servidor que suporte WebSocket. Baixe mod_pywebsocket-xxxtar.gz de pywebsocket que visa fornecer uma extensão Web Socket para Apache HTTP Server e instale-o seguindo estas etapas.
Descompacte e descompacte o arquivo baixado.
Ir para dentro pywebsocket-x.x.x/src/ diretório.
$ python setup.py build
$ sudo python setup.py install
Em seguida, leia o documento por -
- $ pydoc mod_pywebsocket
Isso o instalará em seu ambiente Python.
Inicie o servidor
Vou ao pywebsocket-x.x.x/src/mod_pywebsocket pasta e execute o seguinte comando -
$sudo python standalone.py -p 9998 -w ../example/
Isso iniciará o servidor ouvindo na porta 9998 e usará o handlers diretório especificado pela opção -w onde nosso echo_wsh.py reside.
Agora, usando o navegador Chrome, abra o arquivo html que você criou no início. Se o seu navegador oferecer suporte a WebSocket (), você receberá um alerta indicando que seu navegador oferece suporte a WebSocket e, finalmente, ao clicar em "Executar WebSocket", você receberá uma mensagem de adeus enviada pelo script do servidor.