SparkJava usando Kotlin y WebSockets

Estoy probando Kotlin con SparkJava y tengo problemas para implementar las routes de WebSockets. Intento seguir el ejemplo de WebSockets disponible en el website de SparkJava ( http://sparkjava.com/tutorials/websocket-chat ), y aunque puedo hacer que los elementos OnWebSocketConnect y OnWebSocketMessage funcionen, OnWebSocketClose no se recoge.

Lo he implementado en Java para comprobar que no se trata de un problema del browser, y la implementación de Java funciona bien … por lo que parece ser algo específico de la forma en que Kotlin está interpretando la anotación OnWebSocketClose.

Mi código se parece a lo siguiente

import spark.Spark.* import org.eclipse.jetty.websocket.api.Session import org.eclipse.jetty.websocket.api.annotations.*; fun main(args: Array<String>) { staticFileLocation("/public") webSocket("/chat", WSHandler::class.java) init() } @WebSocket class WSHandler { @OnWebSocketConnect fun connected(session: Session) = println("session connected") @OnWebSocketClose fun closed(session: Session, statusCode: Int, reason: String) = println("closed sessions") @OnWebSocketMessage fun message(session: Session, message: String) = println("Got: $message") } 

Los html / javascript, etc. son según el tutorial en el website de SparkJava.

    Hay un error durante la invocación del método closed el interior de la class org.eclipse.jetty.websocket.common.events.annotated.CallableMethod con el siguiente post:

    El parámetro especificado como no nulo es nulo: método webchat.WSHandler.closed, parámetro reason

    Está relacionado con las características de anulación de Kotlin y todo funciona bien cuando declaras tu método usando la firma a continuación:

     fun closed(session: Session, statusCode: Int, reason: String?)