Приложение Socket.io ... я должен использовать emit или обычный HTTP-запрос и обработать его с express? - PullRequest
1 голос
/ 16 февраля 2020

Я создаю приложение Socket.io, которое время от времени должно извлекать информацию из базы данных. Мне трудно понять, должны ли эти запросы отправляться и обрабатываться с помощью socket.io или они должны отправляться как обычный http-запрос и обрабатываться на сервере с помощью Express.

Я мог бы использовать socket.emit («my-event»), а затем обработать его на сервере, используя socket.on("my-event", () =>{... make request to the database...}), а затем, получив результаты из базы данных, я могу отправить другое событие, чтобы отправить результаты клиенту используя socket.emit("result-from-the-DB", dataFromDB).

Я знаю, что вы, возможно, думаете: «Для этого вам не нужен Socket.io», но наиболее важной части приложения он понадобится, поскольку он будет очень похож на приложение чата. Например, предположим, что пользователь нажимает «Посмотреть мой профиль» в этом приложении. Должен ли запрос на сервер быть отправлен с помощью socket.io (с помощью описанных выше шагов) или просто с помощью обычного http-запроса?

1 Ответ

0 голосов
/ 16 февраля 2020

Приложение Socket.io… я должен использовать emit или использовать обычный http-запрос и обработать его с помощью express?

Нет полностью правильного ответа. Честно говоря, вы можете заставить его работать в любом случае. Вот некоторые преимущества каждого из них:

Преимущества отправки через HTTP-запрос:

  1. http - это протокол запроса / ответа. Если вы отправляете запрос и ожидаете ответа на конкретный запрос c, тогда http лучше подходит для этого. У socket.io действительно нет «ответа» на конкретный c «запрос». Вы можете имитировать c, отправив обратно сообщение или воспользовавшись обратным вызовом с подтверждением.

  2. Если вы планируете использовать другие публикации c для этого API / функциональности или для любого использования вне приложение socket.io, тогда http чаще всего является подходящим API publi c.

  3. Если вам когда-либо придется отправлять большие объемы данных (например, загружать файлы), то есть более зрелые решения, уже созданные для http.

  4. socket.io, обработка ошибок больше на глобальном уровне, чем для конкретного c сообщения. Например, невозможно прослушать, была ли ошибка при отправке определенного сообщения. Если библиотека socket.io обнаружит проблему с сокетом, она закроет сокет и попытается восстановить соединение. Иногда это особенность, иногда это препятствие для того, чтобы знать, попали ли ваши данные туда или нет. Запрос http даст вам четкую и прямую обратную связь, был ли ваш запрос доставлен или нет.

  5. Если то, что вы делаете при обработке этого сообщения, не имеет ничего общего с другими вещами, которые вы ' Если вы работаете с socket.io, то может быть чище (с точки зрения разработки модуля) обрабатывать его с помощью http, чтобы вам не приходилось смешивать код в модуле socket.io, который не связан с другим вещи.

Преимущества отправки через сообщение socket.io:

  1. Как только у вас уже есть socket.io при активном соединении гораздо меньше затрат на отправку небольшого сообщения на ваш сервер с помощью socket.io. поэтому, особенно если вы отправляете таким образом множество небольших сообщений, socket.io может быть значительно более эффективным.

  2. Если есть какие-либо преимущества для таких функций socket.io, как пространства имен и комнаты в обрабатывая этот запрос, вам будет проще обработать его на сервере с помощью socket.io.

  3. Если отправляемое вами сообщение напрямую связано с другими вашими действиями с socket.io на сервере, тогда может быть чище (с точки зрения разработки модуля) обработать этот запрос в модуле socket.io.

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