Socket.io - неожиданные данные получены - PullRequest
0 голосов
/ 20 октября 2018

Итак, я искал повсюду, но не смог найти ответ.В настоящее время я занимаюсь разработкой приложения с использованием typcript (v2.8.3) и response.js (v16.4.0), которое подключается к серверу флеш-памяти с помощью клиента socket.io (v2.1.0).После каждого запуска я получаю данные, которые похожи на данные, которые фактически были отправлены с сервера, но реплицированы несколько раз.Я создал обработчик для конкретного сообщения, которое выглядит следующим образом:

 this.props.socket.on("some_message", this.handleSomeMessage);
 private handleSomeMessage = (message: any) => {
        console.log(message);
        this.setState({data: message.diff});
};

Я зарегистрировал запрос, который отправляется с сервера на стороне сервера:

        if self.key_to_event_dict[key] == "some_message":
        with open("sent.txt", "a") as f:
            json.dump(diff_obj, f)

    self.socketio.emit(
        self.key_to_event_dict[key],
        diff_obj
    )

Вот разница в журналесо стороны сервера:

[{
"diff": {
  "main": {
    "values": [[0],[11.66],[9.82],[10.707500000000001], [0.8743962202571556]],
    "labels": ["gen", "max", "min", "avg", "std"]
  },
  "fp": {
    "values": [[], [], [], [], []],
    "labels": ["gen", "max", "min", "avg", "std"]
  }
}
},{
"diff": {
  "main": {
    "values": [[], [], [], [], []],
    "labels": ["gen", "max", "min", "avg", "std"]
  },
  "fp": {
    "values": [[], [1.539999999999999], [0.570000000000000], 
 [0.832500000000000], [0.40880160224734857]],
    "labels": ["gen", "max", "min", "avg", "std"]
}
    }
},
{
"diff": {
  "main": {
    "values": [[1], [15.32], [8.92], [10.8175], [2.61861007979424]],
    "labels": ["gen", "max", "min", "avg", "std"]
  },
  "fp": {
    "values": [[], [], [], [], []
    ],
    "labels": ["gen", "max", "min", "avg", "std"]
  }
}
},
{
"diff": {
  "main": {
    "values": [[2], [15.32], [9.23], [11.037500000000001], 
[2.4834288292600615]],
    "labels": ["gen", "max", "min", "avg", "std"]
  },
  "fp": {
    "values": [[1, 2], [1.5399999999999991, 0.6100000000000012], 
[0.5700000000000003, 0.5700000000000003], [0.8325000000000005, 
0.600000000000001], [0.40880160224734857, 0.017320508075689172]],
    "labels": ["gen", "max", "min", "avg", "std"]
  }
}
},
{
"diff": {
  "main": {
    "values": [[3], [16.75], [9.23], [14.155000000000001], 
[2.9027616161166248]],
    "labels": ["gen", "max", "min", "avg", "std" ]
  },
  "fp": {
    "values": [[], [], [], [], []],
    "labels": ["gen", "max", "min", "avg", "std" ]
  }
}
},
{
"diff": {
  "main": {
    "values": [[], [], [], [], [],[]],
    "labels": ["gen", "max", "min", "avg", "std"]
  },
  "fp": {
    "values": [[3], [0.6100000000000012], [0.5700000000000003], [0.5900000000000007], [0.020000000000000462]
    ],
    "labels": ["gen", "max", "min", "avg", "std"]
  }
}
}
]

Как видите, в каждом сообщении возвращается не более 2 значений.Однако, когда это сообщение читается внутри клиента:

Socket.io log

Мой обработчик регистрирует сообщение, которое содержит почти 30 значений в каждом массиве, и онивыглядят как умножение значений, полученных ранее.Здесь вы можете увидеть картинку:

зарегистрированный объект

Как вы видите, основной раздел содержит те же значения, что и ранее, но тиражируется 20-30 раз.Может ли быть какая-то проблема с сообщениями, не подтвержденными после получения ответа?

1 Ответ

0 голосов
/ 23 октября 2018

Я собираюсь ответить на мой собственный вопрос: проблема была вызвана регистрацией слишком большого количества обработчиков событий в одном месте.У меня был компонент, который одновременно обслуживал 5 обработчиков событий, и, разделившись на 3 отдельных компонента, я наконец избавился от неожиданных данных.Все еще не знаю причину ошибки, но постараюсь исследовать ее и создать проблему на странице github socket.io.

...