Перенаправление портов в node.js - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два сервера (работающих на двух разных портах), один для приложения чата, а другой для сервера генерации API (пользователь должен зарегистрироваться, указав данные о компании, и мой алгоритм дает пользователю ключ API).

Проблема в том, что я проверяю действительный ключ API, предоставленный пользователем. Если ключ API равен true, он должен перенаправиться на сервер чата (порт № 5200).

Но это нене работает, пожалуйста, дайте любую идею, чтобы решить эту проблему.

Вот мой код,

`

app.post('/checkAPIkey',function(req,res){
        var apikey=req.query.apikey;

        var apikey1=uuidAPIkey.isAPIKey(apikey);
        if(apikey1){
            res.writeHead(302, {
    Location: 'http://localhost:5200'
});
        }else{
            res.end("error");
        }

});`

1 Ответ

0 голосов
/ 08 июня 2018

То, что вам нужно, называется переадресацией запроса.

Пример:

const http = require('http');

app.post('/checkAPIkey', function(req,res){
    var apikey=req.query.apikey;

    var apikey1 = uuidAPIkey.isAPIKey(apikey);
    if(apikey1){
        const options = {
            port: NEW_PORT,
            hostname: 'NEW_HOST',
            method: 'POST',
            path: '/'
         };
        var reqForward = http.request(options, (newResponse) => {
                //Do something with your newResponse
                var responseData = "";
                newResponse.on('data', (chunk) => {
                    //Add data response from newResponse
                    responseData += chunk;
                });

                newResponse.on('end', () => {
                    //Nothing more, send it with your original Response
                    response.send(responseData);
                });
        });

        // If ERROR
        reqForward.on('error', (e) => {
             console.error('Error: ' + e);
        });

        // Write to the request
        reqForward.write(YOUR_POST_DATA);
        reqForward.end();
    } else {
        res.end("error");
    }
});
...