基于vert.x连接websocket

@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}")
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值