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 后缀名判断限制代码
Mar 31 NodeJs
nodejs入门详解(多篇文章结合)
Mar 07 NodeJs
NodeJS的模块写法入门(实例代码)
Mar 07 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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 Ajax乱码
2008/04/09 PHP
PHP 无限级分类
2017/05/04 PHP
基于win2003虚拟机中apache服务器的访问
2017/08/01 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
jQuery通过ajax快速批量提交表单数据
2016/10/25 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
Python Mysql数据库操作 Perl操作Mysql数据库
2009/01/12 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
python正则表达式匹配不包含某几个字符的字符串方法
2019/07/23 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
2020/07/07 Python
python实现简单的五子棋游戏
2020/09/01 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
管理建议书范文
2014/05/13 职场文书
开业庆典活动策划方案
2014/09/21 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
元旦标语大全
2014/10/09 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
中学生逃课检讨书
2015/02/17 职场文书