NodeJS Web应用监听sock文件实例

 更新时间:2015年02月18日 14:40:43   投稿:junjie  
这篇文章主要介绍了NodeJS Web应用监听sock文件实例,本文讲解 NodeJS 的 TCP 和 HTTP 监听 Domain Socket 文件例子,需要的朋友可以参考下

像 NodeJS 写的 TCP 服务可以监听在某个 sock 文件(Domain Socket) 上,它的 HTTP 服务也能这么干。虽然作为 HTTP 服务连接某个 sock 文件的意义不大,所以这里只算是一个纯粹的尝试。

TCP 服务是这样写

复制代码 代码如下:

var net = require('net');
net.createServer(function (socket) {
  socket.on('data', function (data) {
    socket.write('received: ' + data);
  });
}).listen('/tmp/node_tcp.sock');

连接上面那个 '/tmp/node_tcp.sock'
复制代码 代码如下:

telnet /tmp/node_tcp.sock
Trying /tmp/node_tcp.sock...
Connected to (null).
Escape character is '^]'.
Hello World!
received: Hello World!

准确说来本文应该是 NodeJS 的 TCP 和 HTTP 监听 Domain Socket 文件。

对于  TCP 监听 Domain Socket 还是很常用的,比如有时对本机的数据库或缓存的访问就会这么做,像用 '/tmp/mysql.sock' 来访问本机 MySQL 服务,这样就不需要启动 TCP 端口暴露出来,安全性有所提高,性能上也有一定的提升。

现在来看看 NodeJS 的 HTTP 监听在 Domain Socket 上, 从经典的例子来改造下

复制代码 代码如下:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen('/tmp/node_http.sock');
console.log('Server running at /tmp/node_http.sock');

尚不知如何在浏览器中访问以上的 HTTP 服务,所以用 telnet 测试

复制代码 代码如下:

telnet /tmp/node_http.sock
Trying /tmp/node_http.sock...
Connected to (null).
Escape character is '^]'.
GET / HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/plain
Date: Mon, 26 Jan 2015 04:21:09 GMT
Connection: keep-alive
Transfer-Encoding: chunked

c
Hello World

0


能正确处理对  '/tmp/node_http.sock' 上的 HTTP 请求。

用 NodeJS HTTP Client 来访问

复制代码 代码如下:

var http = require('http');

var options = {
  socketPath: '/tmp/node_http.sock',
  method: 'GET',
  path: '/'
};

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

  res.on('data', function (chunk){
    console.log(chunk.toString());
  });
});

req.end();


执行上面的代码,假如文件名是 http_client.js,
复制代码 代码如下:

node http_client.js
STATUS: 200
HEADERS: {"content-type":"text/plain","date":"Mon, 26 Jan 2015 04:25:49 GMT","connection":"close","transfer-encoding":"chunked"}
Hello World

本文只作记录,现在还想不到让 HTTP 服务监听在 Domain Socket 上的实际用意,况且浏览器也无法对它进行访问。

相关文章

  • 基于 Node 实现简易 serve静态资源服务器的示例详解

    基于 Node 实现简易 serve静态资源服务器的示例详解

    静态资源服务器(HTTP 服务器)可以将静态文件(如 js、css、图片)等通过 HTTP 协议展现给客户端。本文介绍如何基于 Node 实现一个简易的静态资源服务器,感兴趣的朋友一起看看吧
    2022-06-06
  • NodeJs的fs读写删除移动监听

    NodeJs的fs读写删除移动监听

    这篇文章主要介绍了NodeJs的fs读写删除移动监听,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • node.js中的buffer.Buffer.isBuffer方法使用说明

    node.js中的buffer.Buffer.isBuffer方法使用说明

    这篇文章主要介绍了node.js中的buffer.Buffer.isBuffer方法使用说明,本文介绍了buffer.Buffer.isBuffer的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js readline 逐行读取、写入文件内容的示例

    Node.js readline 逐行读取、写入文件内容的示例

    本篇文章主要介绍了Node.js readline逐行读取、写入文件内容的示例,运用readline逐行读取的两种实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Nodejs 构建Cluster集群多线程Worker threads

    Nodejs 构建Cluster集群多线程Worker threads

    这篇文章主要为大家介绍了Nodejs 构建Cluster集群多线程Worker threads示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 关于NodeJs和JAVA建立socket连接方式

    关于NodeJs和JAVA建立socket连接方式

    这篇文章主要介绍了关于NodeJs和JAVA建立socket连接方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 轻松创建nodejs服务器(4):路由

    轻松创建nodejs服务器(4):路由

    这篇文章主要介绍了轻松创建nodejs服务器(4):路由,服务器需要根据不同的URL或请求来执行不一样的操作,我们可以通过路由来实现这个步骤,需要的朋友可以参考下
    2014-12-12
  • 如何在Linux上安装Node.js

    如何在Linux上安装Node.js

    这篇文章主要为大家分享了如何在你的Linux发行版上安装Node.js?感兴趣的小伙伴们可以参考一下
    2016-04-04
  • 一文搞懂npm install 意义

    一文搞懂npm install 意义

    我们在安装依赖包的时候,不需要过多的去纠结是使用 -S 还是 -D 呢 ?随便安装到 dependencies 或者 devDependencies 里都行,反正 npm install的时候,都会安装dependencies 和 devDependencies依赖,今天通过本文学习npm install意义,感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • npm报错"A complete log of this run can be found in:"的解决办法

    npm报错"A complete log of this run can be found 

    这篇文章主要给大家介绍了关于npm报错"A complete log of this run can be found in:"的解决办法,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-04-04

最新评论