现在web应用越来越多,大多数利用HTML5技术结合后台API就可以完成。但是有一些场景却需要socket长连接的支持,比如在线即时对话(客服系统),比如游戏在线对战,这两类需求,如果利用ajax轮训机制,服务器负担将随人数增加成倍增长,而且另一方面来说,响应速度也得不到保障(轮训1秒钟一次就很频繁了,而1秒钟的延迟对用户来说体验并不好)!
针对要求及时响应的场景,或者需要服务器通知浏览器的场景,还是用websocket技术解决比较完美,毕竟对于服务器来说,创建1000个socket连接并不难,但1秒钟响应1千次api请求却很吃力,况且大多数时候api根本不会返回有效数据,比如在线对话吧,两个人交流两句话的时间完全可能是数十秒。
websocket可以利用c++实现,当然利用java,python等都可以做到,但对于网站开发人员来说,用nodejs无疑是技术门槛最低的一种方案。话说前头,服务器使用nodejs技术的时候,内存要给够,一个服务器4GB内存不可少吧?如果服务的人数多,给8GB内存甚至更高都是可以的,这是以硬件来换取技术解决的成本。1GB~2GB内存就别跑这么多费内存的服务啦。
先看看nodejs在linux上的部署方法吧,我只说centos上的,因为大多数公司用这个操作系统。操作当然都复制自网上,但我负责任的讲,都是我成功部署的命令:
1、安装nodejs,利用yum
来自:http://blog.csdn.net/xiao_jun_0820/article/details/50838185
64位:
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
32位:
rpm -ivh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
导入 key(64位,32位都一样):
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
##添加 remi 源并导入 key(64位,32位都一样):
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
安装完成后,执行:
curl --silent --location https://rpm.nodesource.com/setup_5.x | bash -
yum -y install nodejs
2、安装ws模块到全局:
3、npm安装forever到全局:
至此,nodejs,ws模块和forever的环境安装完成。
写一个测试的服务器脚本server.js:
var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 8080 }); wss.on('connection', function(ws) { ws.on('message', function(message) { console.log(message.code); ws.send('Server Received: [' + message.code + ']' + message.content); }); ws.send('Welcome to rungo node js server!'); });
用nodejs直接运行server.js,由于ws模块安装到全局了,所以运行前必须设置环境变量NODE_PATH:
当然用这种方式运行的话,安装forever就没有意义了,我们要用forever来运行nodejs代码,这样有3个好处:1、程序如果出错自动重启;2、代码如果有变更自动重新加载;3、可以以守护进程方式让程序后台运行。
那么我们利用forever启动server.js吧:
启动相关
// 1. 简单的启动
forever start app.js
// 2. 指定forever信息输出文件,当然,默认它会放到~/.forever/forever.log
forever start -l forever.log app.js
// 3. 指定app.js中的日志信息和错误日志输出文件,
// -o 就是console.log输出的信息,-e 就是console.error输出的信息
forever start -o out.log -e err.log app.js
// 4. 追加日志,forever默认是不能覆盖上次的启动日志,
// 所以如果第二次启动不加-a,则会不让运行
forever start -l forever.log -a app.js
// 5. 监听当前文件夹下的所有文件改动
forever start -w app.js
显示所有运行的服务
forever list
停止操作
// 1. 停止所有运行的node App
forever stopall
// 2. 停止其中一个node App
forever stop app.js
// 当然还可以这样
// forever list 找到对应的id,然后:
forever stop [id]
重启操作
重启操作跟停止操作保持一致。
// 1. 启动所有
forever restartall
在项目中上线运行时,应该用如下命令运行(输出普通日志和错误日志):
forever start -l forever.log -o out.log -e err.log app.js
相关推荐
基于vue+elementui+nodejs+mysql实现的仓库管理系统源码.zip 该项目是个人毕设项目,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、...
Nodejs+eggjs+mariadb 编写的一套内容管理系统 Nodejs+eggjs+mariadb 编写的一套内容管理系统 Nodejs+eggjs+mariadb 编写的一套内容管理系统 Nodejs+eggjs+mariadb 编写的一套内容管理系统 Nodejs+eggjs+...
基于Nodejs+TypeScript+Koa+MySQL实现的宿舍管理系统源码(前端+后端)+使用说明+sql数据库.zip基于Nodejs+TypeScript+Koa+MySQL实现的宿舍管理系统源码(前端+后端)+使用说明+sql数据库.zip基于Nodejs+TypeScript+Koa+...
图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+gulp.zip 图书管理系统,java+express+mongodb+nodejs+...
liunx nodejs+nginx配置收藏版liunx nodejs+nginx配置收藏版
Java企业级快速开发平台 前后端分离基于nodejs+vue2+webpack+springboot.zipJava企业级快速开发平台 前后端分离基于nodejs+vue2+webpack+springboot.zipJava企业级快速开发平台 前后端分离基于nodejs+vue2+webpack+...
毕业设计,基于Vue+NodeJS+Express+MongoDb开发的在线考试系统,内含NodeJS完整源代码,数据库脚本 基于Vue+Express+MongoDB在线考试系统设计毕业源码案例设计 开发工具: WebStorm 开发环境:Nodejs + vue + ...
基于nodejs+mysql实现的仿京东商城app项目 前端 页面结构(H5,CSS3,原生JS) 框架(基于Vue脚手架:vue-cli)进行搭建 数据请求处理框架(Axios) Vue-Router进行路由处理 Vue-LazyLoad进行图片赖加载 服务端 选用NodeJs...
本文主要介绍NodeJS+Express+Mysql 实现POST和GET请求的增删改查,后续会在博客发布详细说明,可以关注一下
基于nodejs+express+socket的仿微信网页版的聊天室项目源码+数据库基于nodejs+express+socket的仿微信网页版的聊天室项目源码+数据库基于nodejs+express+socket的仿微信网页版的聊天室项目源码+数据库基于nodejs+...
毕业设计,基于Nodejs+Express+WebSocket开发的网络在线聊天室系统,内含NodeJS完整源代码,数据库脚本 基于Nodejs+Express+WebSocket网络在线聊天室系统设计 开发软件:Vscode,mysql 技术栈:nodejs,express,...
通过以上步骤,我们完成了NodeJS+Vue实现支付宝支付的沙箱环境下的完整流程。这个过程中,不仅涉及到了前后端的交互,还涵盖了第三方支付平台的接入,对于提升开发者在实际项目中的综合能力非常有帮助。在实际生产...
基于Nodejs+Vue+elementplus实现的卓越人才选拔系统源码(前端+后端).zip毕业新项目-基于Nodejs+Vue+elementplus实现的卓越人才选拔系统源码(前端+后端).zip毕业新项目-基于Nodejs+Vue+elementplus实现的卓越人才选拔...
Vite + Vue3 + ts 注册登录页面书写 搭配Nodejs + Express + postgresql接口 预览:http://dongnan185.com:8083/videos/vue3.mp4 一共两个包: 一个接口包 连的本地postgresql 表及信息有截图 库自己装 一个vue包 ...
基于nodejs+mysql开发的新闻聚合网站源代码+数据库+详细项目文档 操作系统:Window10 系统 开发语言:Java 开发平台:webstorm + eclipse + android studio 前端开发:html + js + css + bootstrap 框架 后端开发:...
基于NodeJS+Express+mongoDB+Bootstrap的全栈式工程化开发前后端分离博客系统实战
基于Nodejs+eggjs+mongodb编写的一套内容管理系统,结构简单,较目前一些开源的cms,doracms易于拓展,特别适合前端开发工程师做二次开发。 基于Nodejs+eggjs+mongodb编写的一套内容管理系统,结构简单,较目前一些...
基于Nodejs+Express+Mongodb的记账本后端系统源码(课程设计).zip基于Nodejs+Express+Mongodb的记账本后端系统源码(课程设计).zip基于Nodejs+Express+Mongodb的记账本后端系统源码(课程设计).zip基于Nodejs+Express+...
源代码可以自由的下载该多好,非要人去做各种无聊的任务
基于nodejs+react+socket的PC版聊天室系统源码(课程大作业).zip基于nodejs+react+socket的PC版聊天室系统源码(课程大作业).zip基于nodejs+react+socket的PC版聊天室系统源码(课程大作业).zip基于nodejs+react+socket...