Crates.io | phyllo |
lib.rs | phyllo |
version | 0.3.0 |
source | src |
created_at | 2022-07-07 09:16:28.795102 |
updated_at | 2022-07-28 18:31:51.376185 |
description | Websocket-based client for Phoenix channels |
homepage | |
repository | https://github.com/wanderers-nft/phyllo |
max_upload_size | |
id | 621071 |
size | 75,149 |
Phoenix channels in Rust. This crate uses the Actor model to provide Socket and Channel abstractions for connecting to, receiving and sending messages in a topical fashion. The overall structure is based on the reference JavaScript client.
Warning: the results returned may include NSFW links or comments.
use serde_json::Value;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// The socket is generic over a Topic.
let mut socket = SocketBuilder::new(Url::parse("wss://furbooru.org/socket/websocket")?)
.build::<String>()
.await;
// Each channel is generic over an Event and Payload type.
// For simplicity we use serde_json::Value, but in your own code you should deserialize
// to something strongly-typed.
let (_channel, mut subscription) = socket
.channel::<String, Value, Value>(ChannelBuilder::new("firehose".to_string()))
.await?;
loop {
let v = subscription.recv().await?;
println!("{:?}", v);
}
}
TLS is not enabled by default. Enable either of the following for TLS support:
rustls-native-roots
(uses rustls-native-certs
for root certificates)rustls-webpki-roots
(uses webpki-roots
for root
certificates)License: MIT OR Apache-2.0