Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.06.2016, 19:54
Аспирант
Отправить личное сообщение для yinfo Посмотреть профиль Найти все сообщения от yinfo
 
Регистрация: 30.04.2015
Сообщений: 43

Как организовать обмен данными по разным протоколам (http и websocket)
Подскажите, как реализовать такую схему. Node в данном случае выступает в роли коммуникатора.

Программа A постоянно подключена к Node через websocket. В каком-то смысле она является сервером - может принимать запрос в формате JSON и отдавать ответ в том же формате.
Программы B,C,D - не умеют работать с websocket, только через http-запросы.

Допустим, B прислала http запрос. Скрипт смотрит, существует ли активное соединение с A. Если нет - сразу возвращает ответ "Сервер не доступен". Если да - запускает отсчет таймера (например, 30 секунд) и отправляет программе A поступивший по Http запрос (json) через активное соединение websocket. Если от A поступает в указанный интервал ответ - скрипт возвращает его B, если нет - опять же "Сервер не доступен".

Я недавно изучаю Node.js как любитель и пока слабо представляю реализацию. Например, это должны быть два разных скрипта и требуется как-то организовать взаимодействие между разными процессами Node или это один скрипт физически, просто он слушает разные порты?

Еще просьба оценить трудоемкость такой разработки. Подобную систему может один специалист нарисовать на коленке за 50$ или требуется работа бригады спецов за 10.000$?

Спасибо.

Последний раз редактировалось yinfo, 10.06.2016 в 21:01.
Ответить с цитированием
  #2 (permalink)  
Старый 10.06.2016, 21:52
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Что-то типа
var http = require('http');
var koa = require('koa');
var app = koa();
http.createServer(app.callback()).listen(3000);
http.createServer(app.callback()).listen(3001);

Сокеты например на 3000, запросы на 3001. Далее используешь EventEmitter и реализуешь свои задачи. Как Socket.io работает с koa смотреть тут http://spathon.com/koa-js-and-socket-io/
Ответить с цитированием
  #3 (permalink)  
Старый 11.06.2016, 05:23
Аспирант
Отправить личное сообщение для yinfo Посмотреть профиль Найти все сообщения от yinfo
 
Регистрация: 30.04.2015
Сообщений: 43

Сообщение от destus Посмотреть сообщение
Что-то типа

Сокеты например на 3000, запросы на 3001. Далее используешь EventEmitter и реализуешь свои задачи. Как Socket.io работает с koa смотреть тут http://spathon.com/koa-js-and-socket-io/
Спасибо за подсказку! Почитаю, что за зверь такой koa - в книжках с этой библиотекой еще не встречался.
Ответить с цитированием
  #4 (permalink)  
Старый 11.06.2016, 05:49
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от yinfo Посмотреть сообщение
Спасибо за подсказку! Почитаю, что за зверь такой koa - в книжках с этой библиотекой еще не встречался.
Next generation web framework for Node.js.
Ответить с цитированием
  #5 (permalink)  
Старый 11.06.2016, 08:30
Аспирант
Отправить личное сообщение для yinfo Посмотреть профиль Найти все сообщения от yinfo
 
Регистрация: 30.04.2015
Сообщений: 43

Сообщение от destus Посмотреть сообщение
Next generation web framework for Node.js.
Туго у меня пока с английским. Я понимаю, что знать язык просто необходимо, как для изучения документации, так и для общения с заказчиками, ставлю себе задачу подтянуть инглиш за год. Пока читаю русскоязычную литературу/статьи. Так понял уже, что koa - развитие темы express от того же автора, а по express на русском языке много чтива. Наверное, это не принципиально - koa или express использовать?
Ответить с цитированием
  #6 (permalink)  
Старый 11.06.2016, 09:41
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

yinfo,
Можно и на Express.
Ответить с цитированием
  #7 (permalink)  
Старый 11.06.2016, 10:45
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Подобную систему может один специалист нарисовать на коленке за 50$
Да)

Цитата:
Сокеты например на 3000, запросы на 3001.
Необязательно. Благодаря тому, что WebSocket строится поверх http, можно обойтись одним портом.

//backend
import http from "http";
import express from "express";
import WebSocket from "ws";

const app = express();
const server = http.createServer(app);
const wsserver = new WebSocket.Server({server: server});

wsserver.on("connection", () => {/*some code here*/}); //обработка всех вебсокет-подключния
wsserver.on("connection/some/path", () => {/*some code here*/}); // обработка подключений с адресом ws://localhost/some/path

server.listen(80);


//frontend
const connection = new WebSocket("ws://localhost");
const connection2 = new WebSocket("ws://localhost/some/path");


Цитата:
ставлю себе задачу подтянуть инглиш за год
Ты не оставь. Ты просто бери и читай) translate.google.com в помощь

Последний раз редактировалось Erolast, 11.06.2016 в 10:54.
Ответить с цитированием
  #8 (permalink)  
Старый 11.06.2016, 15:45
Аспирант
Отправить личное сообщение для yinfo Посмотреть профиль Найти все сообщения от yinfo
 
Регистрация: 30.04.2015
Сообщений: 43

Сообщение от Erolast Посмотреть сообщение
Да)
Ты не оставь. Ты просто бери и читай) translate.google.com в помощь
Я стараюсь!) Поставил себе в Chrome два плагина: один ImTranslator переводит на русский прямо в тексте, а второй SpeakIt - сразу произносит на английском слово. Оказывается, я слова неправильно некоторые произносил ))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обмен данными с windows приложением webgame Оффтопик 4 02.02.2016 03:42
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Java applet и JavaScript - обмен данными Партизан Серверные языки и технологии 3 15.05.2012 16:08
Как организовать RichEdit arma Элементы интерфейса 2 18.02.2010 14:57