mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-03 21:51:59 +00:00 
			
		
		
		
	fixes in ExposedOneToManyKeyValueRepo and includeWebsocketHandling
This commit is contained in:
		@@ -2,25 +2,23 @@ package dev.inmo.micro_utils.ktor.server
 | 
			
		||||
 | 
			
		||||
import dev.inmo.micro_utils.coroutines.safely
 | 
			
		||||
import dev.inmo.micro_utils.ktor.common.*
 | 
			
		||||
import io.ktor.application.featureOrNull
 | 
			
		||||
import io.ktor.application.install
 | 
			
		||||
import io.ktor.http.cio.websocket.*
 | 
			
		||||
import io.ktor.routing.Route
 | 
			
		||||
import io.ktor.routing.application
 | 
			
		||||
import io.ktor.websocket.webSocket
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.collect
 | 
			
		||||
import kotlinx.serialization.SerializationStrategy
 | 
			
		||||
 | 
			
		||||
private suspend fun DefaultWebSocketSession.checkReceivedAndCloseIfExists() {
 | 
			
		||||
    if (incoming.tryReceive() != null) {
 | 
			
		||||
        close()
 | 
			
		||||
        throw CorrectCloseException
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun <T> Route.includeWebsocketHandling(
 | 
			
		||||
    suburl: String,
 | 
			
		||||
    flow: Flow<T>,
 | 
			
		||||
    converter: (T) -> StandardKtorSerialInputData
 | 
			
		||||
) {
 | 
			
		||||
    application.apply {
 | 
			
		||||
        featureOrNull(io.ktor.websocket.WebSockets) ?: install(io.ktor.websocket.WebSockets)
 | 
			
		||||
    }
 | 
			
		||||
    webSocket(suburl) {
 | 
			
		||||
        safely {
 | 
			
		||||
            flow.collect {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user