 
			
				23.05.2016, 22:17
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 А для Ext Direct есть какие-то готовые серверные библиотеки для Node.js и PHP? Чтобы не писать с нуля реализацию протокола. 
 
REST настолько прост, что особо и писать там нечего. С RPC не все так просто оказалось. 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.05.2016, 23:01
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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, если всё уже украдено до вас?  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				23.05.2016, 23:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				24.05.2016, 00:19
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Он на вебсокетах сделан? Или такой же медленный как REST? 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				24.05.2016, 02:04
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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 и чем скорее оно приидет, тем лучше будет всем.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				24.05.2016, 10:40
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.06.2009 
					
					
					
						Сообщений: 1,033
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 И как тогда глобально отлавливать ошибки, если я перейду с одного вида прокси на другое? Проблема остается нерешенной же. 
		
	
		
		
		
		
		
			
				__________________ 
				Хусамов Сухроб, Москва, khusamov@yandex.ru 
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				24.05.2016, 21:20
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.05.2015 
					
					
					
						Сообщений: 321
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Вам же надо было отлавливать все ошибки централизованно? Ext.direct.Manager на каждую ошибку стреляет событие exception, на себе и по шине Direct. Ловите контроллером и обрабатывайте, как нужно. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.06.2016, 15:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.06.2016, 17:39
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Соединяю Node.js и Ext JS 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 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.
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.06.2016, 22:35
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.05.2015 
					
					
					
						Сообщений: 321
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Это один из возможных вариантов. Декларация Direct API это просто набор вложенных объектов JavaScript с перечислением классов и методов, которые сервер поддерживает. Такой объект можно создавать разными способами; каноническим подходом является генерирование куска JavaScript кода на сервере с последующим включением URI к этому коду на клиенте, как и сделано в данном примере.
 
Есть и более интересные варианты с динамической загрузкой деклараций и созданием Providers по необходимости. В KitchenSink есть раздел с примерами на эту тему.
 
Можно даже включать этот код в сборку приложения, клиенту в сущности важно лишь чтобы к моменту создания Provider объект с декларацией уже существовал.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |