#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. ввод-вывод или написание собственных сокетов