Nodejs的WebSocket模块怎么设置连接超时时间
在建立socket连接时可以很容易设置socket通信的发送和接收超时时间,但是在建立socket通信时,如果是Win98系统,则如果连接失败,则程序会一直等待在哪里,Windows2000默认超时时间是30秒,当然,这个超时时间不算长,但是加入我们要循环扫描一系列端口并且建立连接的话,总的等待时间就会让人忍受不了,下面就以delphi为例进行说明,如何在建立socket的时候设置其超时时间:
//连接,发送和接收时间都设为2秒
SctTimeOut := 2000;
//设置接收数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_RCVTIMEO,@SctTimeOut,SizeOf(Integer));
//设置发送数据通信超时
setsockopt(hSock,SOL_SOCKET,SO_SNDTIMEO,@SctTimeOut,SizeOf(Integer));
//首先,设置通讯为非阻塞模式
dwArg := 1;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//其次,连接服务器
ZeroMemory(@addr, sizeof(addr));
addr.sin_family := AF_INET;
addr.sin_addr.S_addr := inet_addr(pchar(SvrIP));
addr.sin_port := htons(Strtoint(SvrPort));
RecvLen := 0;
RecvLen := connect(hSock, addr, sizeof(addr));
//再次,设置连接超时时间为2秒
tmOut.tv_sec := 2;
tmOut.tv_usec := 0;
FD_ZERO(recvSet);
FD_SET(hSock, recvSet);
RecvLen := select(0, @recvSet, @recvSet, nil, @tmOut);
//连接失败,报错误信息
if (RecvLen = 0) or (RecvLen = SOCKET_ERROR) then
begin
ErrMsg := '连接服务器失败!';
exit;
end;
//最后,设置通讯为阻塞模式
dwArg := 0;
RecvLen := ioctlsocket(hSock,FIONBIO,dwArg);
//end modify
nodejs进程端口号是多少
var cmd=process.platform=='win32'?'netstat -ano':'ps aux';
var exec = require('child_process').exec;
var qqname='qq';
var port='3392';
exec(cmd, function(err, stdout, stderr) {
if(err){ return console.log(err); }
stdout.split('\n').filter(function(line){
var p=line.trim().split(/\s+/);
var address=p[1];
if(address!=undefined){
if(address.split(':')[1]==port)
{
exec('taskkill /F /pid '+p[4],function(err, stdout, stderr){
if(err){
return console.log('释放指定端口失败!!');
}
console.log('占用指定端口的程序被成功杀掉!');
});
}
}
});
});
nodejs搭建web服务器就是这么简单!
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。(nodejs官网上的介绍),正如官网上介绍的那样,nodejs确实很牛!怎么个牛法?看看下面的代码就知道了。
//引入http模块
var http = require("http");
//设置主机名
var hostName = '127.0.0.1';
//设置端口
var port = 8080;
//创建服务
var server = http.createServer(function(req,res){
res.setHeader('Content-Type','text/plain');
res.end("hello nodejs");
});
server.listen(port,hostName,function(){
console.log(`服务器运行在{hostName}:${port}`);
});
短短几行代码就把一个简单的web服务器搭建完成了,为了验证效果,我们在浏览器请求,结果如下
运行成功!
到此为止,一个web服务器就建立成功了! 没错就是这么简单,然后我们就可以写个html界面愉快的玩耍了,哈哈哈!果断的写了一个html页面来请求一下我们的web服务器。
代码简单,点击p获取数据并将服务器返回的数据展示。好了,我们运行一下demo.html文件,我擦来!居然出现了……
很明显,通过jquery请求不到数据,这是因为跨域请求的原因。我们的web服务器并不支持跨域请求,所以报错了。解决方式:在服务器的响应头文件里加上如下代码:
再次重启服务器,运行demo.html,显示结果很是令人欣喜!
通常请求服务器都会拼接参数的,最常用的就是get请求,post请求。很明显,我们现在的代码还不能支持。express框架很好的封装了nodejs的http模块,使我们用起来非常的简单。
引入express :$ cnpm install express –save
使用方式变化不大,通过express()方法开启服务,然后在通过get方法来设置匹配参数的路由,通过在回调函数的req中可以获取请求参数和地址。post请求也是类似,不过有不同的是,post请求在获取参数的时候要引入body-parser 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。
运行结果:
完整的get以及post请求就是以上了。下一篇文章会结果fs文件模块介绍http是如何返回文件的,敬请期待!!
学习从来不是一个人的事情,要有个相互监督的伙伴,想要学习或交流前端问题的小伙伴可以私信“学习”小明加群获取2019web前端最新入门资料,一起学习,一起成长!
nodejs如何检查哪个IP访问80端口
由于linux的系统限制,普通用户是无法打开1024以下端口的,这里面就包括http的默认端口80,这就使得很多用户使用root权限来执行node,这带来了不可预计的安全问题,所以这并不是一个好办法。
其实我们可以使用iptables的端口转发功能来解决这个问题:
1,首先将node的主程序绑定到高于1024端口,比如8090,这样普通用户就可以启动这个http server了,只不过不是在默认的80端口上监听;
2,配置iptables将80端口转发到8090上,如下命令:
#iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8090
该命令的意思就是在iptable中添加一条端口转发规则,如果删除该规则,重新绑定,则先查找出:
#iptables --line-numbers --list PREROUTING -t nat
然后使用行号删除:
#iptables -t nat -D PREROUTING 行号
3,记得添加8090端口到iptables的INPUT ACCEPT规则中
#iptables -I INPUT -p tcp --dport 8090 -j ACCEPT
4,第2步和第3步添加的这些规则,都是临时性的,重启服务器之后就无效了,所以需要保存起来
#/sbin/service iptables save
端口转发配置完成
————————————————
版权声明:本文为CSDN博主「newborn2012」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
使用 NodeJs 实现本地接口系统
一个基于node.js的轻量级 API mock服务 。
在存放mock数据的文件夹下执行命令启动服务。
如果mock数据文件放在名为 mock-data 的文件夹下,则在 mock-data 文件夹下执行以下命令。
以下命令默认端口为 7777
或者使用自定义端口
服务启动后,访问地址为
在存放mock数据的目录下新建 .json 或者 .js 为后辍的文件。
mock规则示例如下:
如果对同一接口分别创建了 js 和 json 两个mock文件,会优先取 js文件 的数据。
mock文件名必须和API接口的文件名一致,才能将API和mock文件匹配。
示例:
示例:
1) 先安装包
2) 在任意位置新建一个文件夹 mock-test
3) 在 mock-test 目录下新建mock数据文件 test.json ,并添加内容如下:
4) 在 mock-test 目录下面执行命令启动mock服务 (默认端口7777)
5) 打开浏览器,输入以下地址,访问mock文件
请求地址只要以 test 结尾的,都可以访问到上面创建的 test.json 文件
6) 项目中使用
以webpack4为例:
Github仓库源码地址: ,欢迎 +Star
0条大神的评论