严智鑫
2024-07-25 40bfddca7ce650a636b016e8690db9623649b200
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
// WebSocketService.js
 
let socket = null;
let messages='' ;
export const initializeWebSocket = (socketUrl, messageHandler) => {
    if (typeof WebSocket === "undefined") {
      console.log("Your browser does not support WebSocket");
      return null;
    }
  
    const socket = new WebSocket(socketUrl);
  
    socket.onopen = function () {
      console.log("WebSocket is now open");
    };
  
    socket.onmessage = (msg) => {
      if (!msg.data) {
        return;
      }
      const isLastChunk = msg.data.endsWith('<END>');
      //是否为最后一块消息
      messages += msg.data;
      if(isLastChunk||msg.data.length<50000) {
        messages= messages.replace('<END>', '');
        const obj = JSON.parse(messages);
        
      // 调用消息处理函数,将数据传递给 Vue 组件
      if (messageHandler) {
        messageHandler(obj);
      }
        messages='';
      }
      
      
 
  
      
    };
  
    return socket;
  };
  
 
  export const closeWebSocket = (socket) => {
    if (socket && socket.readyState === WebSocket.OPEN) {
        socket.close();
        console.log("WebSocket connection closed");
    }
};