Implementamos um sistema de transmissão e visualização de modelos tridimensionais utilizando o WebGL em conjunto com o framework Nuxt.js e uma API RESTful escrita em Node.js fornecendo um serviço de stream de dados com MongoDB e GridFS. O aplicativo pode ser visto em funcionamento em https://testealura.herokuapp.com/. O arquivo pages/upload.vue contém uma interface gráfica para upload de arquivos glfw, recebe como entrada um arquivo .glfw com as definições das propriedades dos modelos e um arquivo .bin contendo os dados binários brutos. Esses arquivos são enviados ao banco de dados através do serviço de stream implementado no arquivo server/routes/api/models.js.          Antes de iniciar a página pages/index.vue é executado o script middleware/models.js que contém instruções para acessar o banco de dados e armazenar os arquivos dos modelos no store da aplicação, para que possa ser consumida pelo componente components/Window.vue que contém toda a implementação da interface WebGL.                  Neste ponto, um problema merece atenção especial. A aplicação recebe os dados binários brutos do servidor como uma sequência de bytes, porém, para que esses dados possam ser consumidos pela aplicação WebGL, devem ser convertidos para o tipo apropriado. Desta forma, como podemos converter longas cadeias de bytes em tempo de execução de forma eficiente? A solução para esse problema é o ArrayBuffer.           Um ArrayBuffer é um espaço de memória de comprimento fixo genérico para dados binários, eles não dizem nada por si só, mas seu poder real está no fato de que podemos criar "visualizações" dos dados subjacentes usando matrizes do tipo JavaScript! De fato, várias visualizações podem ser criadas a partir de uma única fonte ArrayBuffer. Por exemplo, podemos criar uma matriz inteira de 8 bits que compartilhe o mesmo ArrayBuffer que uma matriz inteira de 32 bits existente a partir dos mesmos dados. Os dados subjacentes permanecem os mesmos, apenas criamos representações diferentes deles. Desta forma, podemos facilmente converter dados binários em tempo de execução, conforme implementado em components/gltfReader.js.