55行代码轻松解决websocket

迫于需求,需要在jsp里面添加websocket 0202年了呀,哥哥姐姐,这个框架岁数比我的年纪都要大,做惯前后端分离去做jsp是真的恶心,还好只是负责这一轮的更新迭代
呐呐,如果是阁下的话,一定能够好好守护好二次元世界吧,果然吗,即时是我这样的怪胎。咯呐撒嘛也不不会放弃吗,啊你嘎多!

先上效果图


效果图

心跳重连


心跳重连

功能实现

<!DOCTYPE html>
<html>
  <head>
    <title></title>
  </head>
  <body>
    <br>
    <input type="text" id="sendtext"><button id="btn">发送</button>
    <script>
    var time
    const ws = {
      init: () => {
          return new WebSocket("ws://localhost:8080/ws")
      },
      open: socket => {
        return new Promise((resolve, reject) => {
          socket.onopen = () => {
            resolve(200)
          }
        })
      },
      send: (socket, value) => {
        socket.send(value)
      },
      // 掉线可以和关闭共用代码
      error: socket => {
        socket.onerror = () => {
        }
      },
      // 关闭
      close: socket => {
        socket.onclose = () => {
          clearInterval(time)
          time = setInterval(() => {
            goSocket()
          }, 2000)
        }
      }
    }
    async function goSocket () {
      // 初始化
      const socket = ws.init()
      // 链接
      await ws.open(socket)
      // 接收
      socket.onmessage = (msg) => {
        console.log(msg.data)
      }
      // 发送
      document.getElementById('btn').onclick = () => {
        const value = document.getElementById('sendtext').value
        ws.send(socket, value)
      }
      // 监听掉线
      ws.error(socket)
      // 监听掉线
      ws.close(socket)
      // 所谓的心跳包
      clearInterval(time)
      time = setInterval(() => {
        ws.send(socket, 'ing')
      }, 3000)
    }
    goSocket()
    </script>
  </body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。