Awesome Open Source
Awesome Open Source

coap-rs

Travis Build Status Windows Build Status Downloads Coverage Status MIT licensed

A fast and stable Constrained Application Protocol(CoAP) library implemented in Rust.

Features:

Documentation

Installation

First add this to your Cargo.toml:

[dependencies]
coap = "0.9"

Example

Server:

#![feature(async_closure)]

use coap_lite::{RequestType as Method};
use coap::Server;
use tokio::runtime::Runtime;

fn main() {
    let addr = "127.0.0.1:5683";

	Runtime::new().unwrap().block_on(async move {
		let mut server = Server::new(addr).unwrap();
		println!("Server up on {}", addr);
		
		server.run(async move |request| {
            match request.get_method() {
				&Method::Get => println!("request by get {}", request.get_path()),
				&Method::Post => println!("request by post {}", String::from_utf8(request.message.payload).unwrap()),
				&Method::Put => println!("request by put {}", String::from_utf8(request.message.payload).unwrap()),
				_ => println!("request by other method"),
			};
			
			return match request.response {
				Some(mut message) => {
					message.message.payload = b"OK".to_vec();
					Some(message)
				},
				_ => None
			};
    	}).await.unwrap();
	});
}

Client:

use coap::CoAPClient;

fn main() {
    let url = "coap://127.0.0.1:5683/Rust";
    println!("Client request: {}", url);

    let response = CoAPClient::get(url).unwrap();
    println!("Server reply: {}", String::from_utf8(response.message.payload).unwrap());
}

Benchmark

$ cargo bench

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
rust (4,308
crates (37
coap (25

Find Open Source By Browsing 7,000 Topics Across 59 Categories