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 Real-Time Manager (RTM), 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. 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