@Component
class WebSocketVerticle :AbstractVerticle() {
companion object {
private var log:Logger=LogManager.getLogger(this.javaClass.name)
}
//重新方法
override fun start() {
//创建websocket服务
vertx.createHttpServer().websocketHandler { res->
log.info("websocket访问地址:--->"+ res.path())
if (res.path()!="/test"){
res.reject()
return@websocketHandler
}
//数据接收
res.handler { socket->
try {
log.info("--->socketId:${res.textHandlerID()}")
log.info("--->传输信息为:$socket")
when {
socket.toString()=="你好" ->{
successReturn("你好,有什么可以帮您",res)
throw BaseException("被程序阻止了")
}
socket.toString()=="娃哈哈" -> successReturn("娃哈哈",res)
else -> successReturn("我不懂你在说什么,请重新说一遍",res)
}
} catch (e: Exception) {
e.printStackTrace()
exceptionReturn(e,res)
}
}
//关闭接收
res.closeHandler{close->
log.info("--->socket关闭了")
}
//结束接收
res.endHandler{end->
log.info("--->socket结束了")
}
//监听端口
}.listen(5000){
if (it.succeeded()){
log.info("连接成功")
}else{
log.info("连接失败"+it.cause().message)
}
}
}
//发送异常返回
private fun exceptionReturn(e:Throwable,serverWebSocket: ServerWebSocket){
serverWebSocket.writeTextMessage("系统写了一些异常"+e.message)
}
//成功返回
private fun successReturn(mes:String,serverWebSocket: ServerWebSocket){
val jsonObject=JsonObject()
jsonObject.put("code",1).put("message","数据发送成功").put("data",mes)
serverWebSocket.writeTextMessage(jsonObject.encodePrettily()){res->
if (res.succeeded()){
log.info("--->数据发送成功,数据为:${jsonObject.getString("data")}")
}else{
log.info("--->数据发送失败,原因:${res.cause().message}")
}
}
}
}