nodejsによって書かれたTCPサービスは、ソックファイル(ドメインソケット)で聞くことができ、そのHTTPサービスも同じことを行うことができます。 HTTPサービスとしてソックファイルに接続することはあまり意味がありませんが、ここでは純粋な試みです。
これがTCPサービスの書き方です
コードコピーは次のとおりです。
var net = require( 'net');
net.createserver(function(socket){
socket.on( 'data'、function(data){
socket.write( '受信:' + data);
});
})。聞きます( '/tmp/node_tcp.sock');
上記の '/tmp/node_tcp.sock'を接続する
コードコピーは次のとおりです。
telnet /tmp/node_tcp.sock
/tmp/node_tcp.sockを試してください...
(null)に接続されています。
脱出キャラクターは「^] 'です。
「こんにちは世界」
受信:HelloWorld!
正確には、この記事はnodejsのTCPであり、HTTPがドメインソケットファイルをリスニングする必要があります。
ドメインソケットを聞くTCPにとっては、まだ非常に一般的です。たとえば、ネイティブのデータベースまたはキャッシュにアクセスするなど、「/tmp/mysql.sock」を使用してネイティブMySQLサービスにアクセスするなど、TCPポートを開始する必要はなく、セキュリティが改善され、パフォーマンスも改善されます。
次に、ドメインソケットでのNodeJSのHTTPリスニングを見て、古典的な例から変換しましょう。
コードコピーは次のとおりです。
var http = require( 'http');
http.createserver(function(req、res){
res.writehead(200、{'content-type': 'text/plain'});
res.End( 'Hello World/n');
})。聞きます( '/tmp/node_http.sock');
console.log( ' /node_http.sock'で実行されているサーバー);
ブラウザで上記のHTTPサービスにアクセスする方法がわからないので、Telnetを使用してテストします
コードコピーは次のとおりです。
telnet /tmp/node_http.sock
/tmp/node_http.sockを試してみてください...
(null)に接続されています。
脱出キャラクターは「^] 'です。
get / http / 1.1
HTTP/1.1 200 OK
コンテンツタイプ:テキスト/プレーン
日付:2015年1月26日、2015年1月26日04:21:09 GMT
接続:キープアライブ
転送エンコード:チャンク
c
こんにちは世界
0
'/tmp/node_http.sock'でHTTPリクエストを正しく処理できます。
NodeJS HTTPクライアントを使用してアクセスします
コードコピーは次のとおりです。
var http = require( 'http');
var options = {
SocketPath: '/tmp/node_http.sock'、
方法:「取得」、
パス: '/'
};
var req = http.request(options、function(res){
console.log( 'status:' + res.statuscode);
console.log( 'ヘッダー:' + json.stringify(res.headers));
res.on( 'data'、function(chunk){
console.log(chunk.tostring());
});
});
req.end();
ファイル名がhttp_client.jsの場合、上記のコードを実行します。
コードコピーは次のとおりです。
ノードhttp_client.js
ステータス:200
ヘッダー:{"content-type": "text/plain"、 "date": "Mon、2015年1月26日04:25:49 GMT"、 "Connection": "close"、 "Transfer-Encoding": "Chunked"}
こんにちは世界
この記事は記録のみであり、HTTPサービスをドメインソケットでリスニングさせるという実際の目的を想像することはできません。ブラウザはそれにアクセスできません。