weblink icon indicating copy to clipboard operation
weblink copied to clipboard

weblink

WebLink

Linking Hashlink and other targets to the role of a webserver.

class Main {
    function main() {
        var app = new weblink.Weblink();
        app.get(function(request,response)
        {
            response.send("HELLO WORLD");
        });
        app.listen(2000);
    }
}

Features

  • Uses libuv
  • Minimal and concise with express lib in mind
  • No dependencies, and easy integration
  • Extremely fast, roughly 4x faster than Fastify with big data, and 2x with small Benchmark

Getting Started

Install dev version:

haxelib git weblink https://github.com/PXshadow/weblink

Include in build.hxml

-lib weblink

Targets

requires libuv (asys in the future)

  • hashlink (uses libuv)
  • more targets in the future using asys

Benchmark

Supported

  • methods
    • [x] GET
    • [x] POST
    • [ ] OPTIONS
    • [x] HEAD
    • [x] PUT
  • encoding
    • [ ] gzip
    • [ ] compress
    • [x] deflate
    • [ ] br
  • caching
    • [ ] age
    • [ ] expires
  • security
  • extra
    • [x] content type
    • [x] bytes (png image for instance)
    • [x] redirects
    • [x] serve web content (files ex: html/images/sounds)
    • [ ] connection public ip (haxe 4.2)
    • [x] projection (a type with certain attributes of another type, useful to send only some data)

Contributing

  1. Fork

  2. Clone and setup

  3. Configure VSCode :

    Add that in .vscode/launch.json :

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "HashLink (launch)",
                "request": "launch",
                "type": "hl",
                "cwd": "${workspaceFolder}",
                "preLaunchTask": {
                    "type": "haxe",
                    "args": "active configuration"
                }
            },
            {
                "name": "HashLink (attach)",
                "request": "attach",
                "port": 6112,
                "type": "hl",
                "cwd": "${workspaceFolder}",
                "preLaunchTask": {
                    "type": "haxe",
                    "args": "active configuration"
                }
            }
        ]
    }
    
  4. Develop (and press F5 to launch hashlink)

  5. Pull request