zoukankan      html  css  js  c++  java
  • vue中使用webscoket

    一、为什么需要websocket?

    前端和后端的交互模式最常见的就是前端发数据请求,从后端拿到数据后展示到页面中。如果前端不做操作,后端不能主动向前端推送数据,这也是http协议的缺陷。
    因此,一种新的通信协议应运而生---websocket,他最大的特点就是服务端可以主动向客户端推送消息,客户端也可以主动向服务端发送消息,实现了真正的平等。

    websocket其他特点如下:

    (1)建立在 TCP 协议之上,服务器端的实现比较容易。

    (2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。

    (3)数据格式比较轻量,性能开销小,通信高效。

    (4)可以发送文本,也可以发送二进制数据。

    (5)没有同源限制,客户端可以与任意服务器通信。

    (6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。

    二、vue项目如何引用websocket?
      import '@/lib/sockjs.min.js'
      import '@/lib/stomp.min.js'
    var stompClient = null
    export default {
        data () {
            return {
                path:"ws://192.168.0.200:8005/qrCodePage/ID=1/refreshTime=5",
                socket:""
            }
        },
        mounted () {
            // 初始化
            this.connect ()
        },
        methods: {
           connect (){
            let that = this
            let url = 'ws://192.168.0.200:8005/qrCodePage'
            var socket = new SockJS(url);
            stompClient = Stomp.over(socket)
            stompClient.connect({}, function (frame) {
              let MessageDto = {message: this.buildId }
              stompClient.send("/monitor/pumpList", {}, JSON.stringify(MessageDto));  // 前端向服务器发送请求
              stompClient.subscribe('/monitor/pumpList', function (data) {   // 后端主动向前端推送数据
                let res = JSON.parse(data.body)
                that.pumpList = res.data.list
              });
            });
          },
          // 向服务器发送消息(服务器将发送给发送者)
          queueSend() {    // 前端向服务器发送请求
            let MessageDto = {
              message: this.buildId
            }
            // 参数依次为 发送地址,header,消息
            stompClient.send("/monitor/pumpList", {}, JSON.stringify(MessageDto));
          },
    }
    
  • 相关阅读:
    hdu 4002 Find the maximum
    hdu 2837 坑题。
    hdu 3123
    zoj Treasure Hunt IV
    hdu 2053 Switch Game 水题一枚,鉴定完毕
    poj 1430 Binary Stirling Numbers
    hdu 3037 Saving Beans
    hdu 3944 dp?
    南阳oj 求N!的二进制表示最低位的1的位置(从右向左数)。
    fzu 2171 防守阵地 II
  • 原文地址:https://www.cnblogs.com/IT123/p/11413725.html
Copyright © 2011-2022 走看看