websocket 的创建

简介: websocket 的创建

一、websocket 创建并连接

store / index.ts

import {
    createPinia } from 'pinia';
import useWebsocketStore from './modules/websocket';

const pinia = createPinia();

export {
    useWebsocketStore };
export default pinia;

store / modules / websocket / index.ts

export type RoleType = '' | '*' | 'admin' | 'user';
export interface websocketStore {
    
  logInfo: [];
  simraeInfo: [];
  equipmentInfo: [];
  serverTime: string;
}

store / modules / websocket / types.ts

```css
import { defineStore } from 'pinia';
import { websocketStore } from './types';

const websocketStore = defineStore('websocketStore', {
state: (): websocketStore => ({
logInfo: [],
simraeInfo: [],
equipmentInfo: [],
}),

getters: {
getLogInfo() {
return this.logInfo;
},
getSimraeInfo() {
return this.simraeInfo;
},
getEquipmentInfo() {
return this.equipmentInfo;
},
},

actions: {
setLogInfo(data) {
this.logInfo.unshift(data);
},
setSimraeInfo(data) {
this.simraeInfo = data;
},
setEquipmentInfo(data) {
this.equipmentInfo = data;
},
},
});
export default websocketStore;

>  ## websocket.ts
```ts
import { useWebsocketStore } from '@/store';

const addr = 'http://192.168.1.1:8083/'.replace('http:', 'ws:');
const WSS_URL = `${addr}socket/msg`;
const websocketStore = useWebsocketStore();
let Socket;

export function createSocket() {
  if (!Socket) {
    console.log('建立连接', WSS_URL);
    Socket = new WebSocket(WSS_URL);
    Socket.onopen = openWS;
    Socket.onmessage = messageWS;
    Socket.onerror = errorWS;
    Socket.onclose = closeWS;
    window.onunload = onunload;
  }
}

export function openWS() {
  console.log(`WebSocket连接成功  状态码:${Socket.readyState}`);
}

export function errorWS() {
  console.log(`WebSocket连接失败  状态码:${Socket.readyState}`);
}

export function messageWS(e) {
  const newData = JSON.parse(e.data);

  if (newData.log) {
    websocketStore.setLogInfo(newData.log);
  } else if (newData.simRae) {
    websocketStore.setSimraeInfo(newData);
    console.log('newData.simRae', newData.simRae);
  }else {
    websocketStore.setEquipmentInfo(newData);
  }
  // dataStore.setReFreshFlag(e.data + Math.random());
}

export function closeWS() {
  if (Socket && Socket.close !== null) {
    Socket.close();
    console.log('关闭连接');
  }
  Socket = null;
}

export function onunload() {
  // Socket.close()
}

/** 发送心跳 */
export function sendPing() {
  Socket.send(new Date());
  // setIntervalWesocketPush = setInterval(() => {
  //   Socket.send('ping')
  // }, 5000)
}

export function sendWSPush() {
  if (Socket !== null && Socket.readyState === 3) {
    // if (Socket.close) {
    //   Socket.close()
    // }
    // createSocket() // 重连
  } else if (Socket.readyState === 1) {
    Socket.send();
  } else if (Socket.readyState === 0) {
    setTimeout(() => {
      Socket.send();
    }, 60000);
  }
}
相关文章
|
JavaScript 前端开发 测试技术
教你启动一个最简单的 websocket 服务
启动一个 websocket 服务,有很多方式,我们可以使用 PHP,可以使用 Node.js,也可以使用 Golang 等语言。今天我们主要介绍如何利用 Node.js 启动一个最简单的 websocket 服务,总共分为三个步骤。
2734 0
教你启动一个最简单的 websocket 服务
|
7天前
websocket
websocket
17 0
|
7天前
|
移动开发 网络协议 安全
Websocket
Websocket
|
7天前
|
移动开发 网络协议 Java
WebSocket二
WebSocket二
|
7天前
|
网络协议 JavaScript 前端开发
WebSocket介绍及部署
WebSocket介绍及部署
125 0
|
7月前
|
JavaScript
websocket | 浅浅的封装一下
在写websocket的时候,很多页面都需要使用,每个页面重复写,太麻烦,于是先浅浅的封装一下。
|
7月前
|
JSON 网络协议 前端开发
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
87 0
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
|
10月前
|
消息中间件 Java Maven
WebSocket 基于OkHttps搭配Stomp实现客户端的监听
WebSocket 基于OkHttps搭配Stomp实现客户端的监听
|
网络协议 前端开发 JavaScript
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现(1)
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
|
JSON 网络协议 API
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现(2)
关于 WebSocket 和 HTTP 区别的思考以及一个最简单的 WebSocket 的客户端和服务器实现
112 0