websocket 协议 使用

1、websocket简介

websocket最主要特点是:服务器可以主动给浏览器发送消息,而不是被动接收浏览器请求。

websock协议可以参考:http://www.ruanyifeng.com/blog/2017/05/websocket.html

2、实现代码

(1)websocket.js

let websock;

// 持续连接
function connection(wsuri) {
  websock = new WebSocket(wsuri);

  // 建立连接
  websock.onopen = function(e) {
    console.log('收到服务器握手包.');
    setInterval(function() {
      let agentData = {'name': 'ping', 'message': 'message'}
      websocketsend(agentData)
    }, 30000)
  }

  // 断开连接
  websock.onclose = function(e) {
    console.log('和服务器断开连接! (' + e.code + ')');
  }

  // 连接发生错误
  websock.onerror = function() {
    console.log('websock连接发生错误');
  }
}

// 业务代码发送数据
function sendSock(agentData) {
  console.log('agentData', agentData)

  // 链接成功,可以通信
  if (websock.readyState === websock.OPEN) {

    websocketsend(agentData);
  } else if (websock.readyState === websock.CONNECTING) {

    // 若是正在链接,则等待1s后重新调用
    setTimeout(function() {
      sendSock(agentData);
    }, 1000);
  } else {

    // 若未开启 ,则等待1s后重新调用
    setTimeout(function() {
      sendSock(agentData);
    }, 1000);
  }
}

// 数据发送
function websocketsend(agentData) {
  websock.send(JSON.stringify(agentData));
}

export {connection, sendSock, websock}

(2)业务代码

//注意修改路径
import * as websocket from 'websocket.js' 
//vue mounted时挂在websocket
mounted() {
    websocket.connection(yourUrl)

    // onmessage 用于指定收到服务器数据后的回调函数。
    websocket.websock.onmessage = (e) => {
     //业务处理
    }
  }
methods:{
handleEvent() {
//发送数据
websocket.sendSock(yourParams)}
}

(3)websockt需要服务端配置好服务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值