This package aims to provide simple, minimal and essential networking infrastructures for QuickJS. (Derived from minnet-quickjs)
Currently, it can:
- Creating WebSocket and HTTP
server - Creating WebSocket or HTTP
client fetch
Requirements:
clang or gcclibwebsockets
To use qjs-net in your QuickJS project, run following commands:
cd your_project_dir
git clone https://github.com/rsenn/qjs-net
cd qjs-net
git submodule update --init
cd build
cmake ..Alternatively use either premake or ninja:
premake5 gmake
or
ninja -C build
These alternative build methods can't invoke the compilation of libwebsockets, therefore you have to build and install it manually before you can compile qjs-net:
cd qjs-net
. build-libwebsockets.sh
TYPE=Release builddir=libwebsockets/build \
build_libwebsockets
make -C libwebsockets/build installYou may add the variable OPENSSL_PREFIX (e.g. OPENSSL_PREFIX=/opt/libressl-3.5.1) in front of that command when building against a custom SSL library build.
cd your_project_dir git clone https://github.com/rsenn/qjs-net cd qjs-net/build cmake ..
In your JS script:
```javascript
import * as net from 'net.so';
options: an object with following properties:
port: number, optional, default =7981host: string, optional, default ="localhost"onConnect: function, optional
Calls when a client connects to server. Returns client'sMinnetWebsocketinstance in parameter. Syntax:
onConnect: (client_socket) => {
print("A client connected")
}onClose(why): function, optional
Call when client disconnects from server. Returns disconnect reason in parameter. Syntax:
onClose: (why) => {
print("Client disconnected. Reason: ", why)
}onMessage: function, optional
Call when client sends a message to server. Returns client'sMinnetWebsocketinstance and received message in parameters. Syntax:
onMessage: (client_socket, message) => {
print("Received: ", message)
}onPong: function, optional
Call when client sends a pong. Returns client'sMinnetWebsocketinstance and received ArrayBuffer data in parameters. Syntax:
onPong: (client_socket, data) => {
print("Pongged: ", data)
}options: an object with following properties:
port: number, optional, default =7981host: string, optional, default ="localhost"onConnect: function, optional
Calls when client connects to server succesfully. Returns server'sMinnetWebsocketinstance in parameter. Syntax:
onConnect: (server_socket) => {
print("Connected to server")
}onClose(why): function, optional
Call when client disconnects from server. Returns disconnect reason in parameter. Syntax:
onClose: (why) => {
print("Disconnected from server. Reason: ", why)
}onMessage: function, optional
Call when server sends message to client. Returns server'sMinnetWebsocketinstance and received message in parameters. Syntax:
onMessage: (server_socket, message) => {
print("Received: ", message)
}onPong: function, optional
Call when server sends a pong. Returns server'sMinnetWebsocketinstance and received ArrayBuffer data in parameters. Syntax:
onPong: (server_socket, data) => {
print("Pongged: ", data)
}contains socket to a server or client. You can use these methods to communicate:
.send(message):messagecan be string or ArrayBuffer.ping(data):datamust be ArrayBuffer.pong(data):datamust be ArrayBuffer
url: a string to download resources from.
Returns MinnetResponse object that you can use these
Methods:
.text(): Get body text as string.json(): Get body text, parse as JSON and returns parsed object..arrayBuffer(): Get body as anArrayBuffer
Properties:
.ok: boolean, Read-only
Whether the response was successful.url: string, Read-only
URL of the response.status: number, Read-only
Status code of the response.type: string, Read-only
Type of the response
Check out example.mjs