• Stars
    star
    198
  • Rank 190,010 (Top 4 %)
  • Language
    Erlang
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

QUIC protocol for Erlang & Elixir

quicer

QUIC protocol erlang library.

msquic NIF binding.

Project Status: WIP (actively), POC quality

API: is not stable, might be changed in the future.

Erlang CI License Coverage Status

OS Support

OS Status
Linux Supported
macOS Supported
Windows TBD

BUILD

Dependencies

  1. OTP22+
  2. rebar3
  3. cmake3.16+
  4. CLOG (required for debug logging only)
  5. LTTNG2.12 (required for debug build only)

With DEBUG

Debug build dependency: CLOG

$ rebar3 compile 
# OR
$ make

note,

To enable logging and release build:

export CMAKE_BUILD_TYPE=Debug
export QUIC_ENABLE_LOGGING=ON
export QUICER_USE_LTTNG=1
make

BUILD with logging to stdout

QUIC_LOGGING_TYPE=stdout make

Without DEBUG

export CMAKE_BUILD_TYPE=Release
make

Examples

Ping Pong server and client

Server

application:ensure_all_started(quicer),
Port = 4567,
LOptions = [ {certfile, "cert.pem"}
           , {keyfile,  "key.pem"}
           , {alpn, ["sample"]}
           , {peer_bidi_stream_count, 1}
             ],
{ok, L} = quicer:listen(Port, LOptions),
{ok, Conn} = quicer:accept(L, [], 120000),
{ok, Conn} = quicer:handshake(Conn),
{ok, Stm} = quicer:accept_stream(Conn, []),
receive {quic, <<"ping">>, Stm, _Props} -> ok end,
{ok, 4} = quicer:send(Stm, <<"pong">>),
quicer:close_listener(L).

Client

application:ensure_all_started(quicer),
Port = 4567,
{ok, Conn} = quicer:connect("localhost", Port, [{alpn, ["sample"]}, {verify, none}], 5000),
{ok, Stm} = quicer:start_stream(Conn, []),
{ok, 4} = quicer:send(Stm, <<"ping">>),
receive {quic, <<"pong">>, Stm, _Props} -> ok end,
ok = quicer:close_connection(Conn).

TEST

$ make test

Documentation

$ make doc

Then check the doc in browser:

$ firefox doc/index.html

License

Apache License Version 2.0

More Repositories

1

emqx

The most scalable open-source MQTT broker for IoT, IIoT, and connected vehicles
Erlang
13,235
star
2

MQTTX

A Powerful and All-in-One MQTT 5.0 client toolbox for Desktop, CLI and WebSocket.
TypeScript
3,456
star
3

CocoaMQTT

MQTT 5.0 client library for iOS and macOS written in Swift
Swift
1,543
star
4

neuron

Open source industrial IoT connectivity server
C
878
star
5

MQTT-Client-Examples

MQTT Client Examples
Kotlin
705
star
6

qmqtt

MQTT client for Qt
C++
646
star
7

emqtt-bench

Lightweight MQTT benchmark tool written in Erlang
Erlang
491
star
8

mqtt-jmeter

MQTT JMeter Plugin
Java
438
star
9

emqtt

Erlang MQTT 5.0 Client
Erlang
365
star
10

esockd

Erlang general non-blocking TCP/SSL socket server
Erlang
199
star
11

emqx-operator

A Kubernetes Operator for EMQX
Go
194
star
12

emqx-rel

Release Project for EMQX Broker prior to 4.3. Newer releases are built here: https://github.com/emqx/emqx
Shell
189
star
13

emqx-docs

EMQX product documentation
HTML
151
star
14

NanoSDK

NanoSDK - MQTT 5.0-compliant SDK with QUIC support in NNG flavor
C
108
star
15

mria

Asynchronously replicated Mnesia-like database for Erlang/Elixir
Erlang
99
star
16

qmqtt-client

MQTT Client GUI Written with Qt
C++
97
star
17

ekka

Autocluster and Autoheal for EMQX Broker
Erlang
94
star
18

emqx-web-hook

EMQX Webhook Plugin
Erlang
77
star
19

emqx-rule-engine

EMQX Rule Engine
Erlang
69
star
20

emqx-plugin-template

EMQ X Plugin Template and Demo
Erlang
63
star
21

emqx-coap

EMQX CoAP Gateway
Erlang
61
star
22

emqx-auth-mysql

Authentication, ACL with MySQL Database
Erlang
55
star
23

emqx-dashboard

EMQ X Dashboard
CSS
52
star
24

MQTT-Web-Toolkit

EMQ Web Toolkit
Vue
44
star
25

emqx-auth-http

EMQX HTTP Authentication/ACL Plugin
Erlang
43
star
26

emqx-extension-examples

Examples for ExHook & ExProto
Erlang
41
star
27

emqx-dashboard5

The management console used to monitor and manage EMQX clusters.
Vue
38
star
28

minirest

A Mini RESTful API Framework
Erlang
37
star
29

neuron-dashboard

Neuron Dashboard
TypeScript
36
star
30

emqx-bridge-mqtt

Bridge of MQTT
Erlang
36
star
31

replayq

Generic on-disk persistent queue implementation for Erlang
Erlang
35
star
32

emqx-auth-pgsql

EMQ X PostgreSQL Authentication Plugin
Erlang
35
star
33

edge-stack

Shell
34
star
34

emqx-auth-redis

EMQ X Redis Authentication/ACL Plugin
Erlang
33
star
35

hocon

HOCON configuration Parser for Erlang/OTP
Erlang
32
star
36

mqtt5.0-cn

MQTT Version 5.0 Chinese
31
star
37

emqx-lwm2m

EMQ X LwM2M Gateway
Erlang
30
star
38

emqx-sn

EMQX MQTT-SN Gateway
Erlang
29
star
39

mqttbs

MQTT Benchmark Suite
29
star
40

emqx-auth-jwt

EMQ X JWT Authentication Plugin
Erlang
28
star
41

emqx-lua-hook

EMQ X Lua Hook
Erlang
28
star
42

ecpool

Erlang Connection/Client Pool Library
Erlang
28
star
43

emqx-dashboard-frontend

EMQ X Dashboard Frontend
Vue
25
star
44

emqx-prometheus

EMQX Statsd
Erlang
24
star
45

emqx-docker

An Open-Source, Cloud-Native, Distributed MQTT Message Broker for IoT.
Shell
23
star
46

emqx-exhook

The Multiple-Language extension plugin for EMQ X Hooks
Erlang
23
star
47

emqx-exporter

Prometheus exporter for EMQX
Python
22
star
48

emqx-retainer

EMQ X Retainer
Erlang
21
star
49

emqx-auth-mongo

EMQ X Authentication/ACL with MongoDB
Erlang
21
star
50

coap-jmeter

CoAP JMeter Plugin
Java
20
star
51

eip

EMQX Improvement Proposals
Makefile
19
star
52

emqx-tutorial

EMQ X Tutorial
JavaScript
19
star
53

emqx-elixir-plugin

An Example Plugin for EMQX in Elixir
Elixir
19
star
54

emqx-exproto

The Multiple-Language extension plugin for Protocol access
Erlang
18
star
55

emqx-auth-username

EMQ X Authentication with Username and Password
Erlang
17
star
56

openai-mqtt-nodejs

Node.js project that combines OpenAI's API with MQTT for real-time AI-driven interactions in IoT ecosystems.
JavaScript
17
star
57

blog

EMQ Blog
Python
16
star
58

emqx-auth-clientid

EMQ X ClientId Authentication Plugin
Erlang
16
star
59

jq

jq (nif) for beam
C
15
star
60

emqx-dashboard-web

Frontend Source Code for EMQ X dashboard Enterprise v4
Vue
15
star
61

emqx-tutorial-cn

EMQ X ไธญๆ–‡Tutorial
14
star
62

emqx-extension-java-sdk

The Java SDK for emqx-extension-hook
Java
14
star
63

neuron-docs

Neuron Documentation
Shell
14
star
64

emqx-extension-python-sdk

The Python SDK for emqx-extension-hook
Python
13
star
65

emqttb

A scriptable autotuning load generator for MQTT
Erlang
13
star
66

erlang-rocksdb

Upstream is here: https://gitlab.com/barrel-db/erlang-rocksdb
C++
13
star
67

HBridge

High-performance MQTT Bridge written in Haskell
Haskell
12
star
68

pulsar-client-erl

Apache Pulsar client for Erlang/Elixir
Erlang
11
star
69

emqx-management

EMQ X Management API
Erlang
10
star
70

wormhole

The channel for routing request from cloud to edge.
Go
10
star
71

cdk-emqx-cluster

Python
10
star
72

emqx-ui

EMQX UI Library
Vue
9
star
73

cloud-docs

EMQX Cloud Documentations
CSS
9
star
74

emqx-meter-cn

EMQ X Meter Benchmark
Python
9
star
75

local-storage-encryption

Obfuscate key-value pairs in localStorage.
JavaScript
9
star
76

deploy-emqx-to-aws-with-terraform

HCL
9
star
77

mqtt-to-timescaledb

Ingesting time series data into TimescaleDB using MQTT and EMQX | MQTT Timescale Integration
Makefile
8
star
78

example

EMQ x IoT project sample code
Java
8
star
79

ehttpc

HTTP Client for Erlang/OTP
Erlang
7
star
80

rebar3_emqx_plugin

A rebar3 plugin for automatically generate emqx plugin template
Erlang
7
star
81

ecql

Erlang Cassandra CQL Driver
Erlang
7
star
82

mqtt-to-kafka

Streaming IoT data into Confluent/Kafka using MQTT and EMQX | MQTT Kafka Integration
Makefile
7
star
83

influxdb-client-erl

Erlang
6
star
84

ipqueue

High Performance Interleaved Priority Queue for Erlang/Elixir
Erlang
6
star
85

emqx-recon

Recon debug/optimize plugin
Erlang
6
star
86

deploy-emqx-to-alibabacloud-with-terraform

HCL
5
star
87

emqx-builder

Dockerfile
5
star
88

emqx-reloader

Erlang Module Reloader
Erlang
5
star
89

mqtt-security-scanner

MQTT Security Scanner
Go
5
star
90

lc

Load Control for beam
Erlang
5
star
91

emqx-exproto-java-sdk

The Java SDK for emqx-exproto
Java
5
star
92

emqx-stomp

EMQ X Stomp Protocol Plugin
Erlang
5
star
93

emqx-auth-ldap

EMQ X LDAP Authentication Plugin
Erlang
5
star
94

emqx-10million-test-cn

EMQ X 10MILLION TEST
4
star
95

emqx-webinars

Webinar materials
Shell
4
star
96

mqtt-to-influxdb

Ingesting time series data into InfluxDB using MQTT and EMQX | MQTT InfluxDB Integration
JavaScript
4
star
97

emqx-usage-example

Using Docker Compose to show different usages of EMQX
4
star
98

tf-emqx-performance-test

HCL
4
star
99

fabric-docs

Fabric Docs
4
star
100

homebrew-mqttx

Ruby
4
star