Skip to content

Kotlin DSL

Builder API and coroutine extensions for Atmosphere.

<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-kotlin</artifactId>
<version>LATEST</version> <!-- check Maven Central for latest -->
</dependency>

Create AtmosphereHandler instances with a type-safe DSL:

import org.atmosphere.kotlin.atmosphere
val handler = atmosphere {
onConnect { resource ->
println("${resource.uuid()} connected via ${resource.transport()}")
}
onMessage { resource, message ->
resource.broadcaster.broadcast(message)
}
onDisconnect { resource ->
println("${resource.uuid()} left")
}
onTimeout { resource ->
println("${resource.uuid()} timed out")
}
onResume { resource ->
println("${resource.uuid()} resumed")
}
}
framework.addAtmosphereHandler("/chat", handler)
CallbackDescription
onConnectCalled when a client connects
onMessageCalled when a message is received
onDisconnectCalled when a client disconnects
onTimeoutCalled when a connection times out
onResumeCalled when a suspended connection resumes

Suspending versions of blocking Atmosphere methods:

// Suspend instead of blocking on broadcast
broadcaster.broadcastSuspend("Hello!")
// Broadcast to a specific resource
broadcaster.broadcastSuspend("Private message", resource)
// Suspend instead of blocking on write
resource.writeSuspend("Direct message")
resource.writeSuspend(byteArrayOf(0x01, 0x02))

These extensions use kotlinx.coroutines to bridge Atmosphere’s Future-based API into structured concurrency.

  • Core RuntimeAtmosphereHandler, Broadcaster, AtmosphereResource