Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 23.05.2016, 22:17
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

А для Ext Direct есть какие-то готовые серверные библиотеки для Node.js и PHP? Чтобы не писать с нуля реализацию протокола.

REST настолько прост, что особо и писать там нечего. С RPC не все так просто оказалось.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #12 (permalink)  
Старый 23.05.2016, 23:01
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
А для Ext Direct есть какие-то готовые серверные библиотеки для Node.js и PHP? Чтобы не писать с нуля реализацию протокола.
Для Node.js есть модуль, который ведёт один из наших ребят: https://github.com/jurisv/nodejs.extdirect. Есть даже статейка в нашем уютном бложике: https://www.sencha.com/blog/writing-...nd-in-node-js/.

Цитата:
REST настолько прост, что особо и писать там нечего. С RPC не все так просто оказалось.
Ага, это все так думают. Сперва. С виду-то оно "настолько простое", но как только начинаешь влазить в детали, так оттуда черти и лезут - но обычно уже слишком поздно, потому как пол-проекта уже написано, и дедлайн... Сколько я видел реализаций Ajax транспорта с серверной стороны, так либо там глюк на хаке и костылём погоняет, либо что-то, подозрительно похожее на доморощенную RPC. Зачем вам доморощенная RPC, если всё уже украдено до вас?
Ответить с цитированием
  #13 (permalink)  
Старый 23.05.2016, 23:42
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Я правильно понимаю, что в RPC в качестве маршрута используется имя функции? В данном случае "Server.Demo.Todo.create" (взято из примера https://github.com/jurisv/extdirect....el/TodoItem.js)
То есть по сути, я могу взять любую реализацию RPC?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #14 (permalink)  
Старый 24.05.2016, 00:19
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Он на вебсокетах сделан? Или такой же медленный как REST?
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #15 (permalink)  
Старый 24.05.2016, 02:04
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
Я правильно понимаю, что в RPC в качестве маршрута используется имя функции? В данном случае "Server.Demo.Todo.create" (взято из примера https://github.com/jurisv/extdirect....el/TodoItem.js)
То есть по сути, я могу взять любую реализацию RPC?
Можете взять любую реализацию Ext Direct, клиент встроен в framework, а сервер вам нужен свой. RPC это общее название технологии, Ext Direct одна из реализаций.

Цитата:
Он на вебсокетах сделан? Или такой же медленный как REST?
Штатная реализация на Ajax, но гораздо быстрее REST из-за пакетных запросов. Реализацию на web sockets я видел где-то в форуме. Штатной такой нет, т.к. мы всё же стараемся быть платформонезависимыми и на серверную сторону чересчур уж не лезть, а с web sockets такой фикус не прокатывает - там при любом раскладе надо окапываться на сервере по уши.

В любом случае web sockets уже потеряли смысл, ибо грядет царствие HTTP/2.0 и чем скорее оно приидет, тем лучше будет всем.
Ответить с цитированием
  #16 (permalink)  
Старый 24.05.2016, 10:40
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

И как тогда глобально отлавливать ошибки, если я перейду с одного вида прокси на другое? Проблема остается нерешенной же.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #17 (permalink)  
Старый 24.05.2016, 21:20
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Вам же надо было отлавливать все ошибки централизованно? Ext.direct.Manager на каждую ошибку стреляет событие exception, на себе и по шине Direct. Ловите контроллером и обрабатывайте, как нужно.
Ответить с цитированием
  #18 (permalink)  
Старый 10.06.2016, 15:52
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Начал с этой темой разбираться. Смотрю пример. Не смог найти определение переменной Server.API (строка 40)
https://github.com/jurisv/extdirect....Application.js

где она определена???
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #19 (permalink)  
Старый 10.06.2016, 17:39
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

хехе я правильно понял, что переменная Server.API определяется вот таким хитрым способом?
{
            "path": "/directapi",
            "remote": true
        }

взято из файла https://github.com/jurisv/extdirect....extjs/app.json со строки 111
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #20 (permalink)  
Старый 10.06.2016, 22:35
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Сообщение от khusamov Посмотреть сообщение
хехе я правильно понял, что переменная Server.API определяется вот таким хитрым способом?
{
            "path": "/directapi",
            "remote": true
        }

взято из файла https://github.com/jurisv/extdirect....extjs/app.json со строки 111
Это один из возможных вариантов. Декларация Direct API это просто набор вложенных объектов JavaScript с перечислением классов и методов, которые сервер поддерживает. Такой объект можно создавать разными способами; каноническим подходом является генерирование куска JavaScript кода на сервере с последующим включением URI к этому коду на клиенте, как и сделано в данном примере.

Есть и более интересные варианты с динамической загрузкой деклараций и созданием Providers по необходимости. В KitchenSink есть раздел с примерами на эту тему.

Можно даже включать этот код в сборку приложения, клиенту в сущности важно лишь чтобы к моменту создания Provider объект с декларацией уже существовал.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эффект исчезания кнопки после проверки ошибок на форме Ильфат Элементы интерфейса 2 08.03.2016 11:17
Обработка ajax ошибок Tek Angular.js 5 15.05.2014 14:10
Серверное логирование javascript ошибок Hapson Ваши сайты и скрипты 2 14.04.2014 19:48
Универсальный дескриптор ошибок Сергей1980 Общие вопросы Javascript 0 11.09.2013 17:27
Обработка ошибок при асинхронном выполнении в JavaScript Mirror13 Общие вопросы Javascript 0 29.04.2012 17:19