Skip to content

核心配置与异常处理

应用实例化与基础配置

可以通过以下方式快速配置一个 Saltify 实例。这里仅展示了核心配置。

kotlin
val client = SaltifyApplication {
    addressBase = "http://localhost:3000"
    accessToken = "your_token" // 选填:访问令牌(不用加 Bearer)

    // 事件服务连接配置
    eventConnection {
        type = EventConnectionType.WebSocket // 可选 WebSocket 或 SSE
        autoReconnect = true
    }
}

事件服务连接不会自动建立,你需要手动调用 connectEvent() 才会真正开始监听事件。

kotlin
suspend fun main() {
    val client = SaltifyApplication { /* ... */ }

    client.connectEvent() 
    
    // 其他逻辑

    // 断开事件连接服务,可复用
    client.disconnectEvent()
}

另外,应用和插件都有生命周期管理。在程序退出时,务必调用 close() 方法释放资源,这会触发所有已加载插件的 onStop 钩子并关闭 HTTP 客户端。

全局异常处理与事件服务状态

Saltify 提供了用于监控连接状态和异常的 Flow,一般必须收集以实现自定义逻辑,否则全部异常都会被无视

kotlin
launch {
    client.eventConnectionStateFlow.collect { state ->
        println("连接状态变更: $state")
    }
}

launch {
    client.exceptionFlow.collect { (context, exception) ->
        val component = context.saltifyComponent!!

        when (component.type) {
            SaltifyComponentType.Application -> throw exception
            else -> println(
                "组件 ${component.name}(${component.type}) 抛出了一个异常: " +
                        exception.stackTraceToString()
            )
        }
    }
}