Na epoca do lancamento do Python 3.4, eu estava tao contente com a integracao do Asyncio que escrevi um servidor de chat aqui. O tempo passou e novas versoes do Python foram lancadas. Resolvi entao migrar o servidor para Python 3.6.Uma das grandes mudancas que ocorreram no Python 3.5, foi o suporte a async e await para substituir @asyncio.corroutine e yield from respectivamente. Esta pequena mudanca por si so ja facilita em muito a leitura do codigo, que ficou mais leve. Mas uma das principais mudancas do Python 3.6 sao as f-strings que facilitam a formacao de mensagens.Primeiro, vamos preparar o ambiente. E preciso instalar o Python 3.6. Se voce utiliza Windows, basta baixar o pacote no site da Python.org.Ubuntu 16.10Se voce utiliza Ubuntu 16.10, ainda precisa baixar os fontes e compilar... mas seguindo a recomendacao de amigos do Telegram, resolvi experimentar com o pyenv!Para instalar no Ubuntu, baixe o install_python360.sh e rode com:bash install_python360.shComo alguns pacotes precisam ser instalados no Ubuntu, ele vai usar sudo. Esteja pronto para digitar a senha. No meu caso, como uso docker (docker run -rm -t -i ubuntu:16.10 /bin/bash), rodei o script como root. Se voce instalar no seu usuario, ele vai chamar o sudo quando necessario. Eu gravei um pequeno video do que aconteceu na minha instalacao:WindowsDepois de instalar o Python 3.6.0, instale o websockets com pip3 install websocketsOutros sistemasInstale o Python 3.6.0 e o modulo websockets.O novo servidorMudando @asyncio.coroutine para async def, o codigo ja fica mais claro. Em uma segunda passagem, eu substitui os yield from por await. Como estamos usando Python 3.6, nao custa adaptar as strings para f-strings. E para terminar a migracao, configurei o log para que o codigo nao fique cheio de prints! Ficou assim:Antes de executar, temos que preparar um certificado SSL (no Linux).openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodesO clienteHoje nao tem como escapar do Javascript. Fiz poucas alteracoes no codigo, a maior delas foi simplesmente cosmetica e agora o texto rola para baixo automaticamente quando novas mensagens chegam.RodandoImaginando que voce esteja no mesmo diretorio dos arquivos deste post, vamos criar um servidor web simples com python, claro:python -m SimpleHTTPServer 8080Deixe rodando e abra um outro terminal. Vamos executar nosso servidor:python server.pyE finalmente, abra o browser usando localhost ou seu ip:http://localhost:8080/cliente.htmlObservacao: como utilizamos um certificado auto-assinado, precisamos dar permissao ao browser de abrir a pagina. Como o websocket apenas usa SSL, abra uma outra janela no browser, mas na porta 8765:https://localhost:8765Siga o procedimento de seu browser para abriar a pagina. Normalmente voce deve clicar em um botao dizendo que quer continuar acessando a pagina. Se tudo der certo, voce recebera a mensagem: Invalid request. Feche a janela e recarrege o cliente em:http://localhost:8080/cliente.htmlEle agora deve ter conectado normalmente. Abra outra janela no mesmo endereco.Digite:/nome Xe depois envie uma mensagem. Ela deve aparecer na outra janela. Voce deve digitar /nome Nome antes de enviar mensagens. Teste com varios clientes, modifique e divirta-se. A Fundacao Nokia e uma instituicao de ensino medio, localizada em Manaus, Amazonas. Atuando ha 30 anos na regiao, a instituicao teve