【前端】vue单独使用websocket(js封装)

websocket不同于http协议,是由后端往前端推送数据,因此对于即时性数据比较合适。

创建websocket:


let base = config.wsIp;** 

let webSocketIP = ``;

let socket = '';

let isFirst = true;

export const createSocket =tid => {

    isFirst = true;

    console.log('establish websocket connection')

    webSocketIP = `${base}/websocket/${tid}`

    socket = new WebSocket(webSocketIP);

    socket.onopen = onopenWs;

    socket.onclose = oncloseWs;

    socket.onerror = onerrorWs;

    socket.onmessage = onmessageWs;

}

const onopenWs = event => {

    console.log("链接", event);

    socket.send("websocket client connect testss");

}

const oncloseWs = event => {

    console.log("断开链接", event);

    clearInterval(setIntervalWesocketPush)

}

const onerrorWs = event => {

    console.log("出现错误", event);

    clearInterval(setIntervalWesocketPush)

}

const onmessageWs = event => {

    console.log(JSON.parse(event.data))

    window.dispatchEvent(new CustomEvent('onmessageWS', {

        detail: {

          data: event,

          isFirst: isFirst

        }

    }))

    if(isFirst) {

      isFirst = false;

    }

}

使用:


import { createSocket } from '../apis/websocket'

this.getNoticeData(this.tid);

getNoticeData(tid) {

        createSocket(tid);

        window.addEventListener('onmessageWS', this.setNoticeData)

 },

这种写法是参考的简书上的一个老哥的,但他那个里边有点问题,所以简单做了修改。修改主要是去除了前端的每隔一定时间请求一下,这是没必要的,后端定时推送数据本身就是websocket的一大优势,如果使用前端每隔一段时间请求一下,那还不如直接使用http请求那。

参考链接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文旨在加深对前端知识点的理解,资料来源于网络 position的值, relative和absolute分别是相...
    新晋小牛牛阅读 1,380评论 0 15
  • 面试题一:https://github.com/jimuyouyou/node-interview-questio...
    R_X阅读 1,739评论 0 5
  • 本文旨在加深对前端知识点的理解,资料来源于网络,由本人(博客:http://segmentfault.com/u/...
    风起云帆阅读 354评论 0 0
  • 前端面试问题集锦 JavaScript 部分 1、JQuery $(document).ready() 和 win...
    涯无凌阅读 963评论 0 2
  • 一个老人仙逝 祭奠的 水酒、香火、衣物 金山、银山、别墅…… 琳琅满目 看见那辆 红色的跑车 我挺迷惑的 这不是让...
    开心点金石阅读 1,077评论 34 31

友情链接更多精彩内容