Web Extension

Web Extension

The WebExtension provides HTTP client, server, and WebSocket capabilities. Access via Net namespace.

HTTP Client


# GET Request
response = Net.http_get("http://example.com");

# POST Request
response = Net.http_post("http://example.com/api", "{\\"key\\":\\"value\\"}");
    

Web Server

You can start a lightweight web server (Javalin) to handle requests.


server = Net.Server();

# Register Handlers
server.get("/hello", "handle_hello");
server.post("/data", "handle_data");

# Start Server
server.start(8080);
    

Handlers

Handler functions receive the request body as a string argument.


function handle_hello(body) {
    return "Hello World!";
}
    

WebSockets

Server Side


struct WsCallbacks {
    function onConnect(ctx) { print("Connected"); }
    function onMessage(ctx, msg) { print("Received: " + msg); ctx.send("Echo: " + msg); }
    function onClose(ctx) { print("Closed"); }
    function onError(ctx, err) { print("Error: " + err); }
}

callbacks = WsCallbacks();
server.ws("/ws", callbacks);
    

Client Side


ws = Net.WebSocket();
ws.connect("ws://localhost:8080/ws", callbacks);
ws.send("Hello");
    

Server-Side Rendering

Simple template rendering using {{ key }} syntax.


structure Context { name; role; }
ctx = Context();
ctx.name = "Alice";
ctx.role = "Admin";

template = "User: {{ name }}, Role: {{ role }}";
html = Net.render(template, ctx);
# Result: "User: Alice, Role: Admin"