websocket
WebSocket client bindings for ESP32 Provides WebSocket client functionality for real-time communication
- AssemblyScript
- Zig
- Rust
- TinyGo
- C
- C++
export enum WebsocketState {
Connecting = 0,
Connected = 1,
Closed = 2,
Error = 3
}
export enum WebsocketEventType {
Connected = 0,
Disconnected = 1,
Data = 2,
Error = 3,
BeforeRetry = 4
}
export enum WebsocketError {
Ok = 0,
InvalidArg = 1,
ConnectFail = 2,
NoMemory = 3,
SendFail = 4,
RecvFail = 5
}
// @ts-ignore
@external("websocket", "websocket_client_connect")
export declare function websocketClientConnect(uri: u32): u32;
// @ts-ignore
@external("websocket", "websocket_client_close")
export declare function websocketClientClose(client: u32): void;
// @ts-ignore
@external("websocket", "websocket_client_recv")
export declare function websocketClientRecv(client: u32, timeoutMs: i32): u32;
// @ts-ignore
@external("websocket", "websocket_event_get_id")
export declare function websocketEventGetId(event: u32): i32;
// @ts-ignore
@external("websocket", "websocket_event_get_data")
export declare function websocketEventGetData(event: u32): u32;
// @ts-ignore
@external("websocket", "websocket_event_get_data_len")
export declare function websocketEventGetDataLen(event: u32): u32;
// @ts-ignore
@external("websocket", "websocket_event_get_payload_offset")
export declare function websocketEventGetPayloadOffset(event: u32): i32;
// @ts-ignore
@external("websocket", "websocket_event_get_payload_len")
export declare function websocketEventGetPayloadLen(event: u32): i32;
// @ts-ignore
@external("websocket", "websocket_event_free")
export declare function websocketEventFree(event: u32): void;
// @ts-ignore
@external("websocket", "websocket_client_send_text")
export declare function websocketClientSendText(client: u32, data: u32): i32;
pub const WebsocketState = enum(u32) {
connecting = 0,
connected = 1,
closed = 2,
error = 3
};
pub const WebsocketEventType = enum(u32) {
connected = 0,
disconnected = 1,
data = 2,
error = 3,
beforeRetry = 4
};
pub const WebsocketError = enum(u32) {
ok = 0,
invalidArg = 1,
connectFail = 2,
noMemory = 3,
sendFail = 4,
recvFail = 5
};
pub extern "websocket" fn websocket_client_connect(uri: u32) u32;
pub extern "websocket" fn websocket_client_close(client: u32) void;
pub extern "websocket" fn websocket_client_recv(client: u32, timeout_ms: i32) u32;
pub extern "websocket" fn websocket_event_get_id(event: u32) i32;
pub extern "websocket" fn websocket_event_get_data(event: u32) u32;
pub extern "websocket" fn websocket_event_get_data_len(event: u32) u32;
pub extern "websocket" fn websocket_event_get_payload_offset(event: u32) i32;
pub extern "websocket" fn websocket_event_get_payload_len(event: u32) i32;
pub extern "websocket" fn websocket_event_free(event: u32) void;
pub extern "websocket" fn websocket_client_send_text(client: u32, data: u32) i32;
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum WebsocketState {
Connecting = 0,
Connected = 1,
Closed = 2,
Error = 3
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum WebsocketEventType {
Connected = 0,
Disconnected = 1,
Data = 2,
Error = 3,
BeforeRetry = 4
}
#[derive(Debug, Clone, Copy)]
#[repr(u32)]
pub enum WebsocketError {
Ok = 0,
InvalidArg = 1,
ConnectFail = 2,
NoMemory = 3,
SendFail = 4,
RecvFail = 5
}
#[link(wasm_import_module = "websocket")]
extern "C" {
#[link_name = "websocket_client_connect"]
fn unsafe_websocket_client_connect(uri: u32) -> u32;
#[link_name = "websocket_client_close"]
fn unsafe_websocket_client_close(client: u32);
#[link_name = "websocket_client_recv"]
fn unsafe_websocket_client_recv(client: u32, timeout_ms: i32) -> u32;
#[link_name = "websocket_event_get_id"]
fn unsafe_websocket_event_get_id(event: u32) -> i32;
#[link_name = "websocket_event_get_data"]
fn unsafe_websocket_event_get_data(event: u32) -> u32;
#[link_name = "websocket_event_get_data_len"]
fn unsafe_websocket_event_get_data_len(event: u32) -> u32;
#[link_name = "websocket_event_get_payload_offset"]
fn unsafe_websocket_event_get_payload_offset(event: u32) -> i32;
#[link_name = "websocket_event_get_payload_len"]
fn unsafe_websocket_event_get_payload_len(event: u32) -> i32;
#[link_name = "websocket_event_free"]
fn unsafe_websocket_event_free(event: u32);
#[link_name = "websocket_client_send_text"]
fn unsafe_websocket_client_send_text(client: u32, data: u32) -> i32;
}
pub fn websocket_client_connect(uri: u32) -> u32 {
unsafe {
return unsafe_websocket_client_connect(uri);
}
}
pub fn websocket_client_close(client: u32) {
unsafe {
unsafe_websocket_client_close(client);
}
}
pub fn websocket_client_recv(client: u32, timeout_ms: i32) -> u32 {
unsafe {
return unsafe_websocket_client_recv(client, timeout_ms);
}
}
pub fn websocket_event_get_id(event: u32) -> i32 {
unsafe {
return unsafe_websocket_event_get_id(event);
}
}
pub fn websocket_event_get_data(event: u32) -> u32 {
unsafe {
return unsafe_websocket_event_get_data(event);
}
}
pub fn websocket_event_get_data_len(event: u32) -> u32 {
unsafe {
return unsafe_websocket_event_get_data_len(event);
}
}
pub fn websocket_event_get_payload_offset(event: u32) -> i32 {
unsafe {
return unsafe_websocket_event_get_payload_offset(event);
}
}
pub fn websocket_event_get_payload_len(event: u32) -> i32 {
unsafe {
return unsafe_websocket_event_get_payload_len(event);
}
}
pub fn websocket_event_free(event: u32) {
unsafe {
unsafe_websocket_event_free(event);
}
}
pub fn websocket_client_send_text(client: u32, data: u32) -> i32 {
unsafe {
return unsafe_websocket_client_send_text(client, data);
}
}
package websocket
type WebsocketState uint32
const (
Connecting WebsocketState = 0
Connected WebsocketState = 1
Closed WebsocketState = 2
Error WebsocketState = 3
)
type WebsocketEventType uint32
const (
Connected WebsocketEventType = 0
Disconnected WebsocketEventType = 1
Data WebsocketEventType = 2
Error WebsocketEventType = 3
BeforeRetry WebsocketEventType = 4
)
type WebsocketError uint32
const (
Ok WebsocketError = 0
InvalidArg WebsocketError = 1
ConnectFail WebsocketError = 2
NoMemory WebsocketError = 3
SendFail WebsocketError = 4
RecvFail WebsocketError = 5
)
//go:wasmimport websocket websocket_client_connect
func WebsocketClientConnect(Uri uint32) uint32;
//go:wasmimport websocket websocket_client_close
func WebsocketClientClose(Client uint32);
//go:wasmimport websocket websocket_client_recv
func WebsocketClientRecv(Client uint32, TimeoutMs int32) uint32;
//go:wasmimport websocket websocket_event_get_id
func WebsocketEventGetId(Event uint32) int32;
//go:wasmimport websocket websocket_event_get_data
func WebsocketEventGetData(Event uint32) uint32;
//go:wasmimport websocket websocket_event_get_data_len
func WebsocketEventGetDataLen(Event uint32) uint32;
//go:wasmimport websocket websocket_event_get_payload_offset
func WebsocketEventGetPayloadOffset(Event uint32) int32;
//go:wasmimport websocket websocket_event_get_payload_len
func WebsocketEventGetPayloadLen(Event uint32) int32;
//go:wasmimport websocket websocket_event_free
func WebsocketEventFree(Event uint32);
//go:wasmimport websocket websocket_client_send_text
func WebsocketClientSendText(Client uint32, Data uint32) int32;
typedef enum {
WEBSOCKET_STATE_CONNECTING,
WEBSOCKET_STATE_CONNECTED,
WEBSOCKET_STATE_CLOSED,
WEBSOCKET_STATE_ERROR
} websocket_state_t;
typedef enum {
WEBSOCKET_EVENT_TYPE_CONNECTED,
WEBSOCKET_EVENT_TYPE_DISCONNECTED,
WEBSOCKET_EVENT_TYPE_DATA,
WEBSOCKET_EVENT_TYPE_ERROR,
WEBSOCKET_EVENT_TYPE_BEFORE_RETRY
} websocket_event_type_t;
typedef enum {
WEBSOCKET_ERROR_OK,
WEBSOCKET_ERROR_INVALID_ARG,
WEBSOCKET_ERROR_CONNECT_FAIL,
WEBSOCKET_ERROR_NO_MEMORY,
WEBSOCKET_ERROR_SEND_FAIL,
WEBSOCKET_ERROR_RECV_FAIL
} websocket_error_t;
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_connect")))
extern unsigned int websocket_client_connect(unsigned int uri);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_close")))
extern void websocket_client_close(unsigned int client);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_recv")))
extern unsigned int websocket_client_recv(unsigned int client, int timeout_ms);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_id")))
extern int websocket_event_get_id(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_data")))
extern unsigned int websocket_event_get_data(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_data_len")))
extern unsigned int websocket_event_get_data_len(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_payload_offset")))
extern int websocket_event_get_payload_offset(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_payload_len")))
extern int websocket_event_get_payload_len(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_free")))
extern void websocket_event_free(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_send_text")))
extern int websocket_client_send_text(unsigned int client, unsigned int data);
typedef enum {
WEBSOCKET_STATE_CONNECTING,
WEBSOCKET_STATE_CONNECTED,
WEBSOCKET_STATE_CLOSED,
WEBSOCKET_STATE_ERROR
} websocket_state_t;
typedef enum {
WEBSOCKET_EVENT_TYPE_CONNECTED,
WEBSOCKET_EVENT_TYPE_DISCONNECTED,
WEBSOCKET_EVENT_TYPE_DATA,
WEBSOCKET_EVENT_TYPE_ERROR,
WEBSOCKET_EVENT_TYPE_BEFORE_RETRY
} websocket_event_type_t;
typedef enum {
WEBSOCKET_ERROR_OK,
WEBSOCKET_ERROR_INVALID_ARG,
WEBSOCKET_ERROR_CONNECT_FAIL,
WEBSOCKET_ERROR_NO_MEMORY,
WEBSOCKET_ERROR_SEND_FAIL,
WEBSOCKET_ERROR_RECV_FAIL
} websocket_error_t;
extern "C" {
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_connect")))
extern unsigned int websocket_client_connect(unsigned int uri);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_close")))
extern void websocket_client_close(unsigned int client);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_recv")))
extern unsigned int websocket_client_recv(unsigned int client, int timeout_ms);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_id")))
extern int websocket_event_get_id(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_data")))
extern unsigned int websocket_event_get_data(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_data_len")))
extern unsigned int websocket_event_get_data_len(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_payload_offset")))
extern int websocket_event_get_payload_offset(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_get_payload_len")))
extern int websocket_event_get_payload_len(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_event_free")))
extern void websocket_event_free(unsigned int event);
__attribute__((import_module("websocket")))
__attribute__((import_name("websocket_client_send_text")))
extern int websocket_client_send_text(unsigned int client, unsigned int data);
}