簡體   English   中英

Node.js:通過unix socket發送GET請求

[英]Node.js: Send GET request via unix socket

我是node.js的新手。 我正在嘗試使用unix socket設置客戶端服務器連接,其中我的客戶端請求將在node.js中,而后台運行的服務器將在其中。

客戶端代碼:

    var request = require('request');

    request('http://unix:/tmp/static0.sock:/volumes/list', function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        } else {
            console.log("In else part of the receiver" + response.statusCode + body)
        }
    }


})

當我嘗試與寫入的服務器進行通信時,它會顯示HTTP error: 400 Bad Request: malformed Host header'

同樣適用於:

curl -X GET --unix-socket /tmp/static0.sock http://:/volumes/list

不確定我的請求有什么問題。 我們需要發送標題嗎? 我期待JSON的回應。

要在不使用請求模塊的情況下完成此操作,請嘗試以下操作

const http = require('http');

const options = {
  socketPath: '/tmp/static0.sock',
  path: '/volumes/list',
};

const callback = res => {
  console.log(`STATUS: ${res.statusCode}`);
  res.setEncoding('utf8');
  res.on('data', data => console.log(data));
  res.on('error', data => console.error(data));
};

const clientRequest = http.request(options, callback);
clientRequest.end();

請考慮以下示例:

客戶端代碼:您也可以在某些代碼中進行套接字連接:

 <script src="https://cdn.socket.io/socket.io-1.4.5.js"></script> <script> socket = io.connect('http://www.example.com' , {'force new connection':true}); socket.on('event', function(){ // code to execute }); </script> 

nodejs中的服務器端代碼:對於這個安裝npm,然后1)npm init 2)npm install --save express 3)npm insatll --save socket

 var express = require('express'); var app = express(); var http = require('http'); var server = http.createServer(); var io = require('socket.io').listen(server); var socket = null; io.sockets.on('connection', function(soc) { socket = soc; console.log('socket connected'); }); app.get('/test', function(request, response) { var message = "Hello world"; socket.emit('event', message); response.writeHead(200); reponse.write(message); reponse.end(); }); var server = app.listen(8080, '0.0.0.0'); 

你可以從瀏覽器點擊這個檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM