В чем разница между fetch (функцией в js) и socket io в веб-программировании

#javascript #web

#javascript #веб

Вопрос:

Я хочу знать, может ли fetch работать в качестве замены сокетов для получения / отправки данных между сервером и клиентом? Кроме того, могу ли я использовать fetch для трансляции сообщения всем клиентам?

Комментарии:

1. Определите: «все клиенты».

2. Под «сокетом» — вы имеете в виду веб- сокеты или сокеты Berkeley (они же сокеты BSD)? Это очень разные вещи.

3. Я имею в виду веб-сокеты

4. что я имел в виду под «всеми клиентами»: предположим, я хочу создать приложение, подобное slack, и я хочу транслировать новое сообщение в чате всем участникам канала.

5. fetch это строго клиент-сервер. WebSockets является bi-di, но требует центрального сервера. Если вам нужна одноранговая связь, вы захотите использовать WebRTC вместо этого, однако WebRTC по-прежнему нужен центральный сервер для координации клиентов.

Ответ №1:

fetch — это метод из api браузера для выполнения http-запросов, можете ли вы использовать его для отправки запросов в серверную службу? ДА. Вы хотите реализовать websockets с помощью fetch? тогда нет. Вы должны заглянуть в socket.ввод-вывод, чтобы узнать больше о том, как это работает

Комментарии:

1. socket.io это коммерческий сторонний сервис и библиотека, сопоставимые с SignalR. Речь идет не о WebSockets (который является открытым стандартом). Вместо этого вы должны ссылаться на спецификацию WebSocket.

2.Я рекомендовал эти ресурсы специально, если вы хотите узнать больше о WebSockets: tools.ietf.org/html/rfc6455 html.spec.whatwg.org/multipage/web-sockets.html developer.mozilla.org/en-US/docs/Web/API/WebSockets_API /…

3. итак, если я хочу добавить окно чата в свой проект, я должен использовать socket. ввод-вывод правильный?

4. Это действительно зависит от приложения, которое вы хотите, сколько пользователей у него будет, сколько у вас ресурсов, для компании или просто для личного проекта? если вам нужен бессерверный чат, вы можете использовать Google WebRTC, вы можете использовать серверы Google stun, чтобы избежать написания какой-либо серверной логики. Напротив, если приложение будет больше, то да, я бы выбрал socket. ввод-вывод или написание собственных сокетов