lightspeed/channel
Channel runtime model with topic routing, pubsub, and presence.
Types
Channel
opaqueChannel state.
pub opaque type Channel
Inbound channel events.
pub type Event {
Join(
client_id: String,
topic: String,
user_id: String,
now_ms: Int,
)
Rejoin(
client_id: String,
topic: String,
user_id: String,
now_ms: Int,
)
Leave(client_id: String, topic: String)
Broadcast(client_id: String, topic: String, payload: String)
Push(
client_id: String,
topic: String,
event: String,
payload: String,
)
Crash(reason: String)
Restart
}
Constructors
-
Join( client_id: String, topic: String, user_id: String, now_ms: Int, ) -
Rejoin( client_id: String, topic: String, user_id: String, now_ms: Int, ) -
Leave(client_id: String, topic: String) -
Broadcast(client_id: String, topic: String, payload: String) -
Push( client_id: String, topic: String, event: String, payload: String, ) -
Crash(reason: String) -
Restart
Outbound channel messages.
pub type Outbound {
Reply(
client_id: String,
topic: String,
status: String,
payload: String,
)
PushMessage(
client_id: String,
topic: String,
event: String,
payload: String,
)
BroadcastMessage(
topic: String,
payload: String,
recipients: List(String),
)
PresenceDiff(topic: String, diff: presence.Diff)
System(label: String)
}
Constructors
-
Reply( client_id: String, topic: String, status: String, payload: String, ) -
PushMessage( client_id: String, topic: String, event: String, payload: String, ) -
BroadcastMessage( topic: String, payload: String, recipients: List(String), ) -
PresenceDiff(topic: String, diff: presence.Diff) -
System(label: String)
Values
pub fn new_cluster_ready(
node_id: String,
cluster: String,
) -> Channel
Start a cluster-ready channel.
pub fn presences(
channel: Channel,
topic: String,
) -> List(presence.Entry)
Presence entries for one topic.
pub fn subscribers(
channel: Channel,
topic: String,
) -> List(String)
Subscribers for one topic.