websocket实例使用说明

## websocket

## websocket 实例使用说明

``` vue
    import Io from 'utils/websocket'
    ...
    data () {
        return {
            ...
            socket: new Io()
        }
    }
    ...
    ...
    this.socket.connect('ws://...')
    ...
```
1. 实例路径

   utils/websocket.js

2. 实例属性

方法名 | 含义 | 类型 |参数
---|---|---|--
connect | 建立 socket 连接 | function | url
on | 监听事件|function|eventName, callback
emit | 触发事件 |function|eventName, data
disconnect | 关闭 socket 连接  |function| 无
JSONparse| 将数据格式转换为json| function | data
io.readyState| 只读属性 readyState 表示连接状态 | Number | 0/1/2/3


2-1. on 方法参数(事件参数仅支持原生 socket 事件,不支持自定义事件)

参数名 | 含义 | 类型 |
---|---|---|--
open | 连接建立时触发 | String |
message | 客户端接收服务端数据时触发|String|
error | 通信发生错误时触发 |String|
close | 连接关闭时触发  | String | 
callback | 回调函数  | function | 

2-2. emit 方法参数 (支持自定义事件)

参数名 | 含义 | 类型 |
---|---|---|--
eventName | 自定义事件名 | String |
data | 发送给后端的数据  | object/String | 

2-3 io.readyState

值 | 含义 | 
---|---|
0 | 表示连接尚未建立 | 
1 | 表示连接已建立,可以进行通信 |
2 | 表示连接正在进行关闭 |
3 | 表示连接已经关闭或者连接不能打开  | 

```JS

this.socket = io.connect('ws://192.168.3.196:8080/policeBusiness/websocket/tarInAreaAlarmSocket/12');

console.log(this.socket.io.readyState); // 连接中,打印值为 0

this.socket.on('open', () => {
    // 连接建立后触发此事件
    console.log(this.socket.io.readyState); // 连接成功,打印值为 1
    do something...
})

this.socket.on('message', resp => {
    // 接收到推送的数据后触发此事件
    // 对接收到的数据进行转换
    let data = this.socket.JSONparse(resp.data);
    
    do something...
})

this.socket.on('error', () => {
    // 连接出错触发此事件
    do something...
})

this.socket.on('close', () => {
    // 连接断开触发此事件
    do something...
})

// 触发一个自定义事件,给后端传输数据,通过监听 message 事件接收数据
this.socket.emit('some event', data);

this.socket.on('message', resp => {

    // 对接收到的数据进行转换
    let data = this.socket.JSONparse(resp.data);
    // 接收到后端传过来得数据时对数据包得标签进行判断,判断条件为 emit 中的 eventName 
    if (data.eventLabel === 'some event') {
        do something...
    }
})

```


原文地址:https://www.cnblogs.com/yangshuzhong/p/13401918.html