Pure functions for WebSocket message validation and routing.
Following FC/IS pattern - all functions are pure (no I/O). Message creation, validation, and routing logic.
Pure functions for WebSocket message validation and routing. Following FC/IS pattern - all functions are pure (no I/O). Message creation, validation, and routing logic.
(broadcast-message payload now)Create broadcast message (send to all connections).
Pure function - no side effects.
Args: payload - Message payload map
Returns: Broadcast message map
Create broadcast message (send to all connections). Pure function - no side effects. Args: payload - Message payload map Returns: Broadcast message map
(connection-message connection-id payload now)Create connection-specific message.
Pure function - no side effects.
Args: connection-id - Target connection UUID payload - Message payload map
Returns: Connection message map
Create connection-specific message. Pure function - no side effects. Args: connection-id - Target connection UUID payload - Message payload map Returns: Connection message map
(create-message {:keys [type payload target] :as message-input} now)Create new message record.
Pure function - deterministic for given inputs.
Args: message-input - Map with :type, :payload, :target (optional) now - Current timestamp generated by shell layer
Returns: Message map with timestamp
Create new message record. Pure function - deterministic for given inputs. Args: message-input - Map with :type, :payload, :target (optional) now - Current timestamp generated by shell layer Returns: Message map with timestamp
(explain-message message)Explain why message is invalid.
Pure function - returns validation errors.
Args: message - Message map
Returns: Malli explanation or nil if valid
Explain why message is invalid. Pure function - returns validation errors. Args: message - Message map Returns: Malli explanation or nil if valid
(filter-by-target messages target)Filter messages by target.
Pure function - no side effects.
Args: messages - Collection of message maps target - Target (UUID or keyword)
Returns: Vector of messages with specified target
Filter messages by target. Pure function - no side effects. Args: messages - Collection of message maps target - Target (UUID or keyword) Returns: Vector of messages with specified target
(filter-by-type messages message-type)Filter messages by type.
Pure function - no side effects.
Args: messages - Collection of message maps message-type - Message type keyword
Returns: Vector of messages with specified type
Filter messages by type. Pure function - no side effects. Args: messages - Collection of message maps message-type - Message type keyword Returns: Vector of messages with specified type
(filter-recent messages duration now)Filter messages by time window.
Pure function - no side effects.
Args: messages - Collection of message maps duration - Time window (java.time.Duration) now - Current instant (for testability)
Returns: Vector of messages within time window
Filter messages by time window. Pure function - no side effects. Args: messages - Collection of message maps duration - Time window (java.time.Duration) now - Current instant (for testability) Returns: Vector of messages within time window
(message-count-by-type messages)Count messages by type.
Pure function - no side effects.
Args: messages - Collection of message maps
Returns: Map of {message-type count}
Count messages by type.
Pure function - no side effects.
Args:
messages - Collection of message maps
Returns:
Map of {message-type count}(messages-for-connection messages connection all-connections)Filter messages that would be routed to specific connection.
Pure function - useful for testing routing logic.
Args: messages - Collection of message maps connection - Connection record all-connections - All active connections (for routing context)
Returns: Vector of messages that would reach this connection
Filter messages that would be routed to specific connection. Pure function - useful for testing routing logic. Args: messages - Collection of message maps connection - Connection record all-connections - All active connections (for routing context) Returns: Vector of messages that would reach this connection
(role-message role payload now)Create role message (send to users with specific role).
Pure function - no side effects.
Args: role - Target role keyword payload - Message payload map
Returns: Role message map
Create role message (send to users with specific role). Pure function - no side effects. Args: role - Target role keyword payload - Message payload map Returns: Role message map
(route-message message connections)Determine which connection IDs should receive message.
Pure function - no side effects, just logic.
Args: message - Message map connections - Collection of Connection records
Returns: Vector of connection IDs that should receive message
Determine which connection IDs should receive message. Pure function - no side effects, just logic. Args: message - Message map connections - Collection of Connection records Returns: Vector of connection IDs that should receive message
(route-to-connections message connections)Determine which Connection records should receive message.
Pure function - returns full connection records instead of just IDs. Useful for downstream processing that needs connection metadata.
Args: message - Message map connections - Collection of Connection records
Returns: Vector of Connection records that should receive message
Determine which Connection records should receive message. Pure function - returns full connection records instead of just IDs. Useful for downstream processing that needs connection metadata. Args: message - Message map connections - Collection of Connection records Returns: Vector of Connection records that should receive message
(user-message user-id payload now)Create user message (send to specific user).
Pure function - no side effects.
Args: user-id - Target user UUID payload - Message payload map
Returns: User message map
Create user message (send to specific user). Pure function - no side effects. Args: user-id - Target user UUID payload - Message payload map Returns: User message map
(valid-message? message)Validate message against schema.
Pure function - no side effects.
Args: message - Message map
Returns: Boolean - true if valid
Validate message against schema. Pure function - no side effects. Args: message - Message map Returns: Boolean - true if valid
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |