Сокет клиента Socket.io занимает много времени, чтобы ответить - PullRequest
0 голосов
/ 30 декабря 2018

Я использую socket.io для отправки / получения сообщений между клиентом и сервером.На сервере есть экземпляр Redis, который хранит данные и отвечает данными в течение миллисекунд.

Некоторым сокетам требуется очень много времени, чтобы вернуть данные (строковый большой JSON-объект), хотя они отправляются со стороны сервера почти сразу.Поэтому я ищу предложение, которое решает следующие проблемы:

  • Это нормально для socket.io, чтобы взять это длинное, чтобы выдать длинную строку?
  • Как я могу узнать, какой методили сокет выполняет emit, который занимает много времени?
  • Есть еще какие-либо предложения по улучшению производительности?

Dev tools Chrome

Помощьочень признателен

ОБНОВЛЕНИЕ:

Я пытался использовать Webdis для предоставления ответа клиенту без необходимости идти на сервер, чтобы получить результаты Redis.Однако, хотя ответ появляется в файле console.log примерно через 1 секунду (что соответствует приведенному ниже DOMLoadedContent), веб-сокет по-прежнему занимает около 20 секунд и показывает 0 байтов, как показано ниже:

enter image description here

1 Ответ

0 голосов
/ 30 декабря 2018

Похоже, вы столкнулись с проблемами, с которыми сталкивались и другие при загрузке больших файлов с использованием socket.io:

Node.JS, Socket.IO и больших XML-файлов: экстремальная потеря производительности?

Один из возможных способов действий - попробовать потоковую передачу файлов в socket.io: https://gist.github.com/companje/eea17988257a10dcbf04

Что касается

Как узнать, какиеметод или сокет выполняет emit, который занимает много времени?

Вы всегда можете передать dateTime в данные клиента, полученные из socket.io, а затем вычислить разницу во времени, распечатав вызванные им методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...