6
respostas

Trabalhando com Rest e socket

Gostaria de saber se e possível receber um requisição http , depois realizar uma chamada Socket receber uma resposta e só então retornar um json para quem fez a requisição?

SERVIDOR

module.exports = function(app){
  app.post('/urldarequisicao',function(req,res){

    app.get('io').emit('oiCliente', { hello: 'world' });
    socket.on('oiServidor', function (data) {
      res.json("o cliente disse hello");
    });
  });
};

CLIENTE

<script src="...../socket.io.js" charset="utf-8"></script>
<script type="text/javascript">
var socket = io('http://localhost:3000');
     socket.on('oiCliente', function(consumo){
       socket.emit("oiServidor","ok");
     });

</script>

preciso muito trabalhar desta forma. É possivel?

6 respostas

Oi Jefferson, tudo bem ?

Cara isso é possível sim :D

Existe uma lib chamada request que você pode utilizar que vai facilitar seu trabalho

Poderia me passar a Url para ela. Pois nao consegui achar.

https://github.com/request/request

Realmente acho que voce nao leu minha pergunta.

Eu tinha interpretado o seguinte :

Você receber uma requisição e dentro dela precisar abrir um socket e quando esse socket fosse terminado ia rolar a resposta. -- Isso é possível.

Da forma que você está querendo fazer nunca vi ninguém fazer.

Tem uma biblioteca mais alto nível chamada axios que deve resolver seu problema.

No seu código você usou app.get dentro do app.post, mas o app é utilizado para traçar as rotas, esse app.get seria informando uma nova rota get e não fazer uma requisição.

Link: https://github.com/mzabriskie/axios

Essa biblioteca lhe dá o retorno no que você desejar, json, html... Basta configurar direito, é bem documentada.