首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Kotlin和WebSockets的WebSockets

使用Kotlin和WebSockets的WebSockets
EN

Stack Overflow用户
提问于 2017-06-20 20:17:44
回答 1查看 612关注 0票数 1

我正在用SparkJava试用Kotlin,并且在实现WebSockets路由时遇到了困难。我正试图效仿SparkJava网站(http://sparkjava.com/tutorials/websocket-chat)上的SparkJava示例,虽然我可以让OnWebSocketConnect和OnWebSocketMessage元素工作,但OnWebSocketClose不会被选中。

我在Java中实现了这一点,以反复检查它是否是浏览器问题,而且Java fine...so --这似乎是Kotlin解释OnWebSocketClose注释的方式特有的东西。

我的代码如下所示

代码语言:javascript
复制
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")
}

html / javascript等如SparkJava网站上的教程所示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 07:53:29

在深深地调用closed方法时,org.eclipse.jetty.websocket.common.events.annotated.CallableMethod类中有一个错误,下面的消息如下:

指定为非空的参数为空:方法webchat.WSHandler.closed,参数原因

它与Kotlin的可空特性相关,当您使用下面的签名声明您的方法时,所有功能都很好:

代码语言:javascript
复制
fun closed(session: Session, statusCode: Int, reason: String?)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44662272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档