serveWebsocket
inline fun <T : RpcService> Routing.serveWebsocket(basePath: String, service: T, env: KsrpcEnvironment<String>)
Hosts the given service over a WebSocket on the supplied basePath within a Ktor Routing block. The server application must have the WebSockets plugin installed.
Samples
import com.monkopedia.ksrpc.channels.connect
import com.monkopedia.ksrpc.ksrpcEnvironment
import com.monkopedia.ksrpc.ktor.websocket.asWebsocketConnection
import com.monkopedia.ksrpc.ktor.websocket.serveWebsocket
import com.monkopedia.ksrpc.toStub
import io.ktor.client.HttpClient
import io.ktor.client.plugins.websocket.WebSockets
import io.ktor.server.application.install
import io.ktor.server.engine.embeddedServer
import io.ktor.server.netty.Netty
import io.ktor.server.routing.routing
import io.ktor.server.websocket.WebSockets as ServerWebSockets
fun main() {
//sampleStart
val env = ksrpcEnvironment { }
val service = object : GreetingService {
override suspend fun greet(name: String): String = "Hello, $name!"
}
// Embed ksrpc into a Ktor WebSocket server.
// The server application must have the WebSockets plugin installed.
val server = embeddedServer(Netty, port = 8080) {
install(ServerWebSockets)
routing {
serveWebsocket("/ws", service, env)
}
}
// server.start(wait = true)
//sampleEnd
}fun Routing.serveWebsocket(basePath: String, channel: SerializedService<String>, env: KsrpcEnvironment<String>)