0

当我第一次连接到套接字事件时,我正确地从服务器(python flask_socket)获得了消息的数量,但是当我关闭窗口并执行 socket.disconnect() 并使用 socket.connect() 再次连接时,我得到了例如两次相同的消息:如果我第一次收到 100 条消息,那么在关闭并重新打开窗口后我收到 200 条消息。在服务器端,它似乎发送了正确数量的消息我认为我并没有真正在客户端做正确的事情

服务器.py

@socketio.on('join_log_request')
def join_log_request(containerid, sessionId):
    
    container_logs = Sdk.docker_client.logs(containerid, stream=True, timestamps=True)   
    
    while True:
        try:
            log = next(container_logs).decode("utf-8")
            socketio.emit('stream_logs_response', {'log': log,  'containerid':containerid, 'sessionId':sessionId })
            print(sessionId)
            socketio.sleep(0)

        except StopIteration:
            socketio.emit('stream_logs_response', {'log': 'CONTAINER NOT RUNNING','containerid':containerid, 'sessionId':sessionId })
            break

客户端.ts

containerLogs(container: Container): void {
    
    this.socket.ioSocket.connect();
    
    this.sessionId = UUID.UUID()

    console.log('Connect sessionId: ' + this.sessionId)
    
    this.logContainerContext = container;
    
    this.sidenav_logs = true;
    
    this.socket.emit('join_log_request', container.id, this.sessionId);
    
    this.socket.on('stream_logs_response', (response: any) =>{
      console.log(response.sessionId)
      if(response.sessionId == this.sessionId){
          this.logs.push(response.log)
      }  
    })
  }

如果需要更多信息,请通过这篇文章与我联系。

谢谢

4

0 回答 0