Как организовать обмен данными по разным протоколам (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$? Спасибо. |
Что-то типа
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/ |
Цитата:
|
Цитата:
|
Цитата:
|
yinfo,
Можно и на Express. |
Цитата:
Цитата:
//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"); Цитата:
|
Цитата:
Со временем отложится в голове, будешь кое-что понимать (как пишется и переводится по крайней мере), типа так на примере этого топика: Пост#1 json (javascript object notation), http (hypertext transfer protocol) новые: java, script, object, notation, hyper, text, transfer, protocol, node, web, socket Пост#2/3 знаем: http, socket новые: create, server, app, callback, call, back, listen, event, emitter, emit Пост#4 знаем: node, web новые: next, generation, framework, frame, work, for Пост#5/6 новые: express Пост#7 знаем: web, socket, http, back, express, app, create, server, listen новые: backend, end, import, from, const, new, on, connection, some, code, here, path, localhost, local, host, frontend, front, translate Благо сейчас есть гугл переводчик и разные расширения для браузеров в плане перевода... |
Цитата:
|
Часовой пояс GMT +3, время: 12:38. |