Fork this project to create your own Rust functions as a web service.
- The Rust function source code is in the
src/lib.rs
file. - Use the ssvmup tool to compile the Rust function into a WebAssembly module in the
pkg
directory. - Optional: Use the
node node/app.js
command to test the function locally in Node.js. - Upload the
pkg/*.wasm
file to the Second State FaaS service, OR to a Node.js server, to turn it into a web service.
This is the Docker edition. Check out the Github Codespaces edition here.
Build the WebAssembly module.
$ docker pull secondstate/ssvm-nodejs-starter
$ docker run -p 3000:3000 --rm -it -v $(pwd):/app secondstate/ssvm-nodejs-starter
(docker) # cd /app
(docker) # ssvmup build
Upload the wasm file in the pkg folder to the FaaS. Double check the .wasm file name before you upload.
(docker) # curl --location --request POST 'https://rpc.ssvm.secondstate.io:8081/api/executables' \
--header 'Content-Type: application/octet-stream' \
--header 'SSVM-Description: say hello' \
--data-binary '@pkg/hello_lib_bg.wasm'
The FaaS returns
{"wasm_id":161,"wasm_sha256":"0xfb413547a8aba56d0349603a7989e269f3846245e51804932b3e02bc0be4b665","usage_key":"00000000-0000-0000-0000-000000000000","admin_key":"00xxxxxx-xxxx-xxxx-xxxx-4adc960fd2b8"}
Make a function call via the web.
(docker) # curl --location --request POST 'https://rpc.ssvm.secondstate.io:8081/api/run/161/say' \
--header 'Content-Type: text/plain' \
--data-raw 'Second State FaaS'
hello Second State FaaS
You can easily incorporate this web service into your HTML web pages. See how
From the first terminal window, start the Node.js application.
(docker) # node node/app.js
From a second terminal window, you can test the local server.
$ curl http://localhost:3000/?name=SSVM
hello SSVM
Now, you can copy and paste code from this project.
-
src/lib.rs
--> Replace with code here -
Cargo.toml
--> Replace with code here -
node/app.js
--> Replace with code here -
FaaS deployment: https://github.com/second-state/wasm-learning/tree/master/faas
-
Node.js deployment: https://github.com/second-state/wasm-learning/tree/master/nodejs
- The Second State VM (SSVM) is a high performance WebAssembly virtual machine designed for server-side applications.
- The SSVM NPM addon provides access to the SSVM, and programs in it, through a Node.js host application.
- The SSVM ready tool, ssvmup is a toolchain for compiling Rust programs into WebAssembly, and then make them accessible from JavaScripts via the SSVM.
- The Second State FaaS is an open source FaaS engine based on WebAssembly and Node.js.
Brought to you by the Open source dev team at Second State. Follow us on Twitter, Facebook, LinkedIn, YouTube, or Medium