node.js - общаться с TCP-сервером (data == JSON) - PullRequest
1 голос
/ 11 апреля 2011

Я новичок в node.js, погрузился в него на прошлых выходных и получил удовольствие от различных примеров и небольших уроков. Теперь я хотел бы начать небольшой проект для моей локальной сети и задать несколько вопросов, чтобы получить правильное направление.

Установка:
У меня есть сервер, работающий на моей локальной сети. С этим сервисом можно связываться через TCP и / или HTTP (можно включить или отключить TCP или HTTP или оба из них) через определенный порт, а также отправлять и получать данные через JSON по запросу. В основном я хочу создать веб-интерфейс на основе node.js для этой службы, получать и отправлять данные JSON с помощью веб-браузера из этой службы и в нее.

Проблема:
Я уже знаю, как настроить http-сервер на основе node.js. Но сейчас я застрял в поиске идеи, как создать клиент на основе node.js, который стоит между службой и клиентом веб-браузера для передачи данных от клиента к серверу и наоборот. Что-то вроде роутера или прокси.

Вот базовая схема, основанная на точке зрения клиента (веб-браузера):

Отправка: запросы веб-обозревателя -> маршруты node.js -> служба получает
Получить: веб-браузер получает <- node.js маршруты <- служба отвечает </p>

Вопросы:
- Перейти на TCP или HTTP? (возможно, отключение HTTP-сервера сэкономит некоторые ресурсы) - возможно, уже ответили этим сообщением
- Есть ли какие-нибудь пакеты для node.js, которые соответствуют моим потребностям?
- Пойти за рамки (выражения?) Или будет достаточно простого node.js?
- Любые советы приветствуются:)
Редактирование:
- Возможно ли связать сетевое устройство, например, eth0 внутри node.js вместо определения IP-адреса?

Спасибо за вашу помощь и с наилучшими пожеланиями
cefra

1 Ответ

1 голос
/ 11 апреля 2011

Нет причин, по которым у вас не может быть службы REST HTTP.

Используйте что-то вроде express для обработки маршрутизации.

Если я правильно понимаю вашу проблему, то у вас есть веб-служба, написанная в «foobar» на порту TCP, где вы можете подключиться к узлу.

Так что, если вы используете Express, вы напишите что-то вроде

app.get("/resources/", function(req, res) {
    var socket = new net.Socket();
    socket.connect(port, host, function() {
        socket.on("data", function(json) {
            res.contentType("json");
            res.send(json);
            socket.end();
        });
        socket.write(...);
    });
});

Итак, вы написали http-посредник, который связывается с вашим сервисом по TCP, а затем записывает данные в ответ вашего HTTPзапрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...