ホームページ >ウェブフロントエンド >jsチュートリアル >NodeJS Web アプリケーションのリスニング Sock ファイル example_node.js

NodeJS Web アプリケーションのリスニング Sock ファイル example_node.js

WBOY
WBOYオリジナル
2016-05-16 16:13:411663ブラウズ

NodeJS で記述された TCP サービスは、sock ファイル (ドメイン ソケット) をリッスンでき、その HTTP サービスも同様のことができます。ただし、HTTP サービスとして sock ファイルに接続することにはあまり意味がないため、これは単なる試みです。

TCP サービスは次のように記述されます

コードをコピー コードは次のとおりです:

var net = require('net');
net.createServer(関数 (ソケット) {
ソケット.on('データ', 関数 (データ) {
socket.write('received: ' data);
});
}).listen('/tmp/node_tcp.sock');

'/tmp/node_tcp.sock'
の上に接続します。
コードをコピー コードは次のとおりです:

telnet /tmp/node_tcp.sock
/tmp/node_tcp.sock を試行しています...
(null) に接続されました。
エスケープ文字は「^]」です。
Hello World!
受信: Hello World!

正確に言うと、この記事は 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 Worldn');
}).listen('/tmp/node_http.sock');
console.log('/tmp/node_http.sock で実行されているサーバー');

ブラウザで上記の HTTP サービスにアクセスする方法がまだわからないので、Telnet を使用してテストしてください

コードをコピー コードは次のとおりです:

telnet /tmp/node_http.sock
/tmp/node_http.sock を試行しています...
(null) に接続されました。
エスケープ文字は「^]」です。
GET/HTTP/1.1
HTTP/1.1 200 OK
コンテンツタイプ: text/plain
日付: 2015 年 1 月 26 日月曜日 04:21:09 GMT
接続: キープアライブ
転送エンコーディング: チャンク

c
ハローワールド

0


「/tmp/node_http.sock」上の HTTP リクエストを正しく処理できます。

NodeJS HTTP クライアントを使用してアクセスします

コードをコピー コードは次のとおりです:

var http = require('http');

var オプション = {
ソケットパス: '/tmp/node_http.sock',
メソッド: 'GET'、
パス: '/'
};

var req = http.request(options, function(res){
console.log('STATUS: ' res.statusCode);
console.log('HEADERS: ' JSON.stringify(res.headers));

res.on('データ', 関数 (チャンク){
console.log(chunk.toString());
});
});

req.end();


ファイル名が http_client.js,
の場合、上記のコードを実行します。
コードをコピー コードは次のとおりです:

ノード http_client.js
ステータス: 200
ヘッダー: {"content-type":"text/plain","date":"Mon, 26 Jan 2015 04:25:49 GMT","connection":"close","transfer-encoding":"chunked" }
ハローワールド

この記事は記録のためだけのものです。HTTP サービスにドメイン ソケットをリッスンさせる実際の目的は思いつきません。また、ブラウザーはそれにアクセスできません。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。