wu
2023-12-20 5af1f5cf615811334009eaf39dc7eb9e30ad96e0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
let socket;
 
export default {
  install: (Vue, options) => {
    Vue.prototype.$connectWebSocket = (viewname, handleData) => {
      if (typeof WebSocket === "undefined") {
        console.log("您的浏览器不支持 WebSocket");
      } else {
        let socketUrl = "ws://" + options.ip + ":8888" + "/springboot-vue3/api/talk/" + viewname;
        if (socket != null) {
          socket.close();
          socket = null;
        }
 
        // 开启一个 WebSocket 连接
        socket = new WebSocket(socketUrl);
 
        // 打开事件
        socket.onopen = () => {
          console.log("WebSocket 已打开");
        };
 
        // 收到消息
        socket.onmessage = (msg) => {
          if (!msg.data) {
            return;
          }
          handleData(JSON.parse(msg.data));
        };
 
        // 关闭事件
        socket.onclose = () => {
          console.log("WebSocket 已关闭");
        };
 
        // 发生错误事件
        socket.onerror = () => {
          console.log("WebSocket 发生了错误");
        };
      }
    };
 
    Vue.prototype.$sendWebSocketMessage = (message) => {
      socket?.send(JSON.stringify(message));
    };
 
    Vue.prototype.$closeWebSocket = () => {
      // 关闭 WebSocket 连接
      socket.close();
    };
  },
};