1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

doc

Criando uma Função usando WebAssembly na plataforma da Azion

Sobre WebAssembly

WebAssembly (abreviado Wasm) permite desenvolver aplicações web de alto desempenho utilizando tecnologias de plataforma web aberta e diferentes linguagens. Pode ser pensado como uma alternativa ao JavaScript, mas não como um substituto para ele. Destina-se a funcionar junto a ele. Desta forma, os desenvolvedores podem usar ambas as linguagens como preferirem, como o melhor dos dois mundos, já que podem rodar juntos.

Embora o WebAssembly seja uma linguagem de baixo nível com um formato binário rígido, permitindo que ele tenha um desempenho quase nativo para aplicações, ele não foi projetado para ser usado como uma linguagem em si, mas como um alvo de compilação eficaz para linguagens como C, C++, Rust e outras.

Foi criado como um padrão aberto dentro do W3C WebAssembly Community Group com os seguintes objetivos:

  • Ser rápido, eficiente e portátil;
  • Ser legível e depurável;
  • Manter-se seguro;

Passo-a-passo: criando uma Edge Function usando Wasm

Obtendo o código

  1. Acesse o Real-Time Manager;
  2. No menu Edge Libraries, clique em Edge Functions;
  3. Clique em Add Function para adicionar uma Edge Function;
  4. Crie um nome para sua function;
  5. Selecione JavaScript.

Sintaxe

//
// DESCRIPTION: fetching the WASM function binary with a loop and responding summary (value on parameter '?loop=<value>')
//
{
    async function handleRequest(request) {
            let wasmResponse = await fetch("http://domain/loop.wasm");
            let wasmArray = await wasmResponse.arrayBuffer();
            let module = await WebAssembly.compile(wasmArray);
            let instance = new WebAssembly.Instance(module);
            const loop = instance.exports.loop;
            let count = 1
            let params = (new URL(request.url)).searchParams;
            if (params.has("loop")) {
                let number = params.get("loop");
                if (!isNaN(number)) {
                    count = parseInt(number);
                }
            }
            let value = loop(count);
            return new Response("loop sum = " + value + "\n");
    }

    addEventListener("fetch", (event) => {
        event.respondWith(handleRequest(event.request));
    });
}

Documentação relacionada


Não encontrou o que procurava? Abra um ticket.