Рубрики
Без рубрики

5 способов построить приложения в реальном времени с JavaScript

Был момент времени, когда мы не ожидали слишком много с веб-страниц. Что напоминает мне, сайт Movie Space Jam по-прежнему находится в Интернете в своей первоначальной форме. И он использует фреймет. Не Iframes. Рамы. Космическое варенье пространство варенья, символы, имена и все связанные

Автор оригинала: FreeCodeCamp Community Member.

Был момент времени, когда мы не ожидали слишком много с веб-страниц. Что напоминает мне, сайт Movie Space Jam по-прежнему находится в Интернете в своей первоначальной форме. И это использует Frameset Отказ Не Iframes. Рамы Отказ

Космический джем Space Jam, персонажи, имена и все связанные с ними индикации являются товарными знаками Warner Bros. © 1996 www.warnerbros.com.

У Warner Bros есть некоторые нежно использованные копии Dreamweaver MX.

Это было 1996 год. Это 2019 год. Времена изменились, и пользователи ожидают намного больше из веб-сайтов. Они не просто ожидают, что они будут хорошо выглядеть, они ожидают, что они будут полны приложения, и это включает в себя в режиме реального времени.

Приложения в реальном времени

Приложения в режиме реального времени – это те, которые реагируют на изменения в любом месте в системе подключенного приложения – не только те, которые выполняются текущим пользователем.

Канонический пример в режиме реального времени – это приложение обмена сообщениями. Вроде, когда вы отправляете группу друзей в текстовое сообщение о том, чтобы собраться вместе для крыльев в пятницу. Затем обновите каждые минуту в минуту с возможностью добычи от работы в баре. Спасибо, Тревор. Теперь мы все в ловушке в аду уведомлении, что мы не подписались. Я просто хотел несколько крыльев.

Когда дело доходит до веб, существует несколько разных шаблонов, технологий, библиотек и услуг, которые вы можете использовать для получения функциональности в режиме реального времени, которая обычно зарезервирована для нативных приложений. Недавно я сел с Энтони Чу, который дал мне 5 способов, чтобы вы могли создать приложения в реальном времени в JavaScript.

Энтони Чу # MMSigniteThetour (@nthonychu) | Twitter Последние твиты от Энтони Чу # MMSignitethetour (@nthonychu). Облачный адвокат @microsoft. Azure, ASP .NET, Node.js … twitter.com.

1. Долговысокое

Это когда приложение запрашивает обновления с сервера в расписании. Приложение является «опросом» сервера.

Это чистый эквивалент дети, спрашивающих “мы там еще?” каждые пять минут. Это похоже на то, что мы там, ребенок? Спросите меня еще раз, и я клянусь вам, что я брошу эту копию «фильма пчелы» в канаве, и вы можете смотреть в окно на траве, как мы сделали, когда я был ребенком.

Долгопроизводство может быть реализована вручную с любой HTTP-библиотекой JavaScript, такая как jQuery или Axios. Я никогда не реализовал это сам. При выполнении некоторых исследований для этой статьи я обнаружил, что лучший способ сделать это – использовать рекурсивную функцию с Сетримс Отказ Это потому, что используя Setinterval Не учитывает запросы, которые не удаются или время ожидания. Вы можете в конечном итоге с помощью группы AJAX, которые все обработаны из строя.

Вот пример из самой хорошей статьи на Tech Octave Отказ

(function poll(){
   setTimeout(function(){
      $.ajax({ url: "server", success: function(data){
        //Update your dashboard gauge
        salesGauge.setValue(data.value);
        //Setup the next poll recursively
        poll();
      }, dataType: "json"});
  }, 30000);
})();

Существуют также библиотеки, такие как Pollemer (не путать с полимером), которые специально для длительного опроса. Возьми? «Опрос» Yмер? Потому что это опросы? Это на?

Велосипед/Pollemer Библиотека общего назначения AJAX/Long-Peail. Способствуйте разработку Vanout/Pollemer, создавая учетную запись на GitHub. github.com.

Долгий опрос хорош, потому что он работает в каждом браузере; даже супер старые. Это плохо, потому что это супер неэффективно, а не совсем «в режиме реального времени». Он также имеет некоторые странные краевые случаи (например, сбои запроса), которые вы должны программировать, как мы уже видели с Setinterval Отказ

Лучшая альтернатива для долгого опроса – серверные события или SSE.

2. Серверные события

Сервер, отправленные событиями (SSE) аналогичны долгом, так как клиент просит сервер для информации. Большая разница состоит в том, что с SSE сервер просто открывает соединение. Когда происходит событие, и есть информация для отправки клиенту, сервер отправляет событие клиенту.

Сервер, отправленные событиями Традиционно веб-страница должна отправить запрос на сервер для получения новых данных; То есть страница запрашивает данные из … Developer.mozilla.org.

Вернувшись в нашу «путешествие из ада» аналогии, это было бы, если бы ребенок сказал: «Мы там еще?», А затем терпеливо ждал вашего ответа. Четыре возвышенные часы молчания позже вы прибываете на пункт назначения, оборачиваются, и говорите «да». Это самый нереальный сценарий, который я когда-либо придумал в своей жизни.

SSE является частью браузера Регуляторы API. Обратите внимание, что в соответствии с Caniuse.com , ни IE 11, ни краевые опоры SSE. Это делает его вроде жесткой технологии, однако, это интересно.

Хорошая новость заключается в том, что в значительной степени каждый браузер поддерживает веб-розетки.

3. Веб-розетки

Веб-розетки – это технология, которая облегчает настоящий двусторонний канал связи между клиентом и сервером. В отличие от серверов, отправленных на сервер события, что является только связь от сервера к клиенту, веб-розетки могут использоваться для связи в обоих направлениях.

Веб-розетки, э-э-элбоз. Они на самом деле не такие API, с которыми вы хотите создавать приложения. Вид как ты мог бы Сделайте HTTP-запрос с XHR объект , но божественный нет. Я гугламил «PHP Web Socket образец» и нашел эту дози из документов PHP. Я увеличил весь выход в хроме и едва получил все в одном скриншоте.

И это только часть сервера. Вы все еще должны провести браузер.

Итак …that’s A нет для меня.

К счастью, есть много библиотек, которые абстрактные веб-розетки еще дальше, так что вам не нужно писать ни одно из этого. Один из этих библиотек называется «SIGNALR».

4. Сигнал

Сигнал является библиотекой, которая реализует веб-розетки как в JavaScript, так и в .NET. На сервере вы создаете то, что известно как «HUB» в Signalr. Этот концентратор отправляет и получает сообщения от клиентов.

Затем клиенты подключаются к концентратору (используя библиотеку JavaScript Signalr javaScript) и отвечать на события из концентратора или отправлять свои собственные события в концентратор.

Сигнал также отступает к длинному опросу, когда веб-розетки недоступны. Хотя это не супер, если вы не используете IE 9 или ниже.

Вот пример настройки Synyr на сервере …

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the broadcastMessage method to update clients.
            Clients.All.broadcastMessage(name, message);
        }
    }
}

Ладно ладно. Я знаю, что это не яблоки для сравнения яблок с примером PHP сверху, но я пытаюсь сделать точку здесь. Просто иди с этим. Сделать это для меня. У меня тяжелое утро.

Таким образом, Siverr делает его более весело программировать веб-сокеты, но вы знаете, что еще веселее, чем их программирование? Не программировать их.

5. Azure Signalr.

Часто, когда мы хотим настроить приложения в реальном времени, построение сервера веб-сокета не совсем не добавленная стоимостью. Мы делаем это, но только потому, что мы должны получить в режиме реального времени. Мы бы предпочли, чтобы это «только что работало».

Azure Synivicr – именно это. Это сигнализирующий концентратор, который вы можете потреблять по требованию как услугу. Это означает, что вам нужно только отправлять и отвечать на события – это то, что вы после первого места.

Что такое Azure Syvicler Обзор службы Azure Syvicler. docs.microsoft.com.

Вы создаете HUB Signalr в Azure в качестве службы Azure, а затем просто подключаетесь к нему с клиента и отправляют/получать сообщения.

И теперь вы знаете …

Проверьте интервью ниже с Энтони. Мы застрелили это в Вегасе, пока мы оба были на конференции, и хорошо провели время с париком, который я купил на вечеринке. Лучший 8 $, я когда-либо проводил.