Como construir funções no edge com WebAssembly

Saiba mais sobre o processo necessário para a criação de uma edge function que utiliza uma função originada de um arquivo WebAssembly.

  1. No Azion Console, no canto superior esquerdo, selecione Edge Functions na seção Edge Libraries.
  2. Clique em Add a Function.
  3. Escolha um nome para sua função.
  4. Em Language, selecione JavaScript.
  5. Copie e cole o seguinte código de exemplo no bloco de código:
async function handleRequest(request) {
// You can either retrieve your .wasm file through fetch, for instance :
// let wasmResponse = await fetch("http://somedomain/yourfile.wasm")
// or embed the binary in the code, as shown below.
const wasmCode = new Uint8Array([
0, 97, 115, 109, 1, 0, 0, 0, 1, 6, 1, 96, 1, 127, 1, 127, 3, 2, 1, 0, 7, 13, 1, 9, 105, 110, 99, 114, 101,
109, 101, 110, 116, 0, 0, 10, 9, 1, 7, 0, 32, 0, 65, 1, 106, 11,
]);
const wasmModule = new WebAssembly.Module(wasmCode);
const wasmInstance = new WebAssembly.Instance(wasmModule);
const increment = wasmInstance.exports.increment;
let value = 0;
if (request.headers.has("value")) {
let number = request.headers.get("value");
if (!isNaN(number)) {
value = parseInt(number);
}
}
let incremented = increment(value);
return new Response(
"incrementing " + value + " we have " + incremented
);
}
addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});

A constante wasmCode é a representação binária do seguinte código WAT:

(module
(type (;0;) (func (param i32) (result i32)))
(func (;0;) (type 0) (param i32) (result i32)
local.get 0
i32.const 1
i32.add)
(export “increment” (func 0)))
  1. Clique no botão Save.

Agora, a função está pronta para ser instanciada em uma edge application. Veja como instanciar e executar as funções em sua edge application.

A saída esperada da função recém-criada é semelhante a:

incrementing 0 we have 1

Contribuidores