NodeJS Web应用监听sock文件实例


Posted in NodeJs onFebruary 18, 2015

像 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 上的实际用意,况且浏览器也无法对它进行访问。
NodeJs 相关文章推荐
Nodejs sublime text 3安装与配置
Jun 19 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
解决Nodejs全局安装模块后找不到命令的问题
May 15 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 #NodeJs
NodeJs基本语法和类型
Feb 13 #NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 #NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 #NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 #NodeJs
NodeJS学习笔记之Connect中间件模块(二)
Jan 27 #NodeJs
NodeJS学习笔记之Connect中间件模块(一)
Jan 27 #NodeJs
You might like
php数组索引与键值操作技巧实例分析
2015/06/24 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
微信小程序 SocketIO 实例讲解
2016/10/13 Javascript
详解vue组件基础
2018/05/04 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
详解React项目中碰到的IE问题
2019/03/14 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python实现简单查找最长子串功能示例
2019/02/26 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
python3发送邮件需要经过代理服务器的示例代码
2019/07/25 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
python sklearn包——混淆矩阵、分类报告等自动生成方式
2020/02/28 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
html5 外链式实现加减乘除的代码
2019/09/04 HTML / CSS
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
会计电算化应届生求职信
2013/11/03 职场文书
大学新生入学教育方案
2014/05/16 职场文书
股票投资建议书
2014/05/19 职场文书
教师工作失职检讨书
2014/09/18 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
教师节大会主持词
2015/07/06 职场文书
2019新员工试用期转正工作总结范文
2019/08/21 职场文书