文章目录
零、系统环境
1、系统提供商:腾讯云。详细参数如下:
l 操作系统 Ubuntu Server 14.04.1 LTS 64位
l CPU 1核
l 内存 1GB
l 系统盘 disk-p2yqwai6 20GB(云硬盘)
l 公网带宽 1Mbps
2、Node.js版本:node-v6.0.0
3、websocket服务端:socket.io、WS
一、Node.js安装
1.1、Node.js介绍
1、node.js是一个javascript解析器。
3、下载:http://nodejs.org/dist/v6.0.0/node-v6.0.0.tar.gz
1.2、安装
1、下载;
2、解压:tar -xzvf node-v6.0.0.tar.gz
3、配置:./configure
4、编译:make
插曲1安装make程序:apt-get install make
插曲2安装g++程序:apt-get install build-essential
5、安装:make install
6、查看版本:node –version
1.3、测试
1、新建js文件: test.js
console.log("hello node.js") //注意没有;号
2、运行:node test.js
3、输出:hello node.js
二、websocket部署
2.1、websocket服务端选择
1、node-websocket-sever
websocket还没有成为标准,还在不停地修正中,chrome 14采用了drafts 10 导致drafts 75, 76 无法使用。上面那个连接的版本已经支持dratf 10,可以在chrome 14以上运行了。下载的东西是一个库,不用安装。下面开始使用这个库。
2、node-websocket
需要依赖于底层的C++,Python的环境,支持以node做客户端的访问。
3、faye-websocket-node
是faye软件框架体系的一部分,安装简单,不需要其他依赖库。
4、socket.io
功能强大,支持集成websocket服务器端和Express3框架与一身。Socket.IO支持4种协议:WebSocket、htmlfile、xhr-polling、jsonp-polling,它会自动根据浏览器选择适合的通讯方式
2.2、socket.io方式【在线聊天】
2.2.1、获取demo源码
https://github.com/plhwin/nodejs-socketio-chat
2.2.2、部署server
1、进入工作目录:/home/xiaoxia/web/node.js/socketio/nodejs-socketio-chat/server
2、安装环境
安装express和socket.io
npm install --save express //忽略警告 npm install --save socket.io //忽略警告
3、运行服务端,监听3000端口
node index.js
2.2.3、部署web
1、进入工作目录:/home/xiaoxia/web/node.js/socketio/nodejs-socketio-chat/client
2、修改源码:client.js
this.socket = io.connect('ws://realtime.plhwin.com:3000'); //修改为: this.socket = io.connect('ws://tx.evanxia.com:3000');
3、安装环境,同上
npm install --save express //忽略警告
4、新建node服务器,app.js
var http = require('http'); var express = require('express'); var app = express(); app.use( express.static(__dirname + "/")); // 创建服务端 http.createServer(app).listen('8082', function() { console.log('启动服务器完成'); });
2.2.4、测试
在线演示:http://tx.evanxia.com:8082/index.html
2.3、直接使用WS模块【示例】
2.3.1、新建程序
进入工作目录:/home/xiaoxia/web/node.js/websocket
1、新建server.js
var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: 3001}); wss.on('connection', function(ws) { ws.on('message', function(message) { console.log('received: %s', message); }); ws.send('hello client'); console.log('send: hello client'); });
2、新建client.js
var ws = new WebSocket("ws://tx.evanxia.com:3001/"); ws.onopen = function() { document.write("websocket opend</br>"); ws.send("I'm client"); document.write("client->server: I'm client</br>"); }; ws.onmessage = function (evt) { document.write("server->client: "+evt.data+"</br>"); }; ws.onclose = function() { document.write("websocket closed</br>"); }; ws.onerror = function(err) { document.write("Error: " + err+"</br>"); };
3、新建index.html
<!DOCTYPE html> <html> <body> <h1>WebSocket</h1> <script src="client.js"></script> </body> </html>
2.3.2、部署server
1、进入工作目录:/home/xiaoxia/web/node.js/websocket安装ws模块
npm install ws //忽略警告
2、运行服务端,监听3001端口
node server.js
2.3.3、部署web
过程参考2.2.3,端口号改为8081
2.3.4、测试
在线演示:http://tx.evanxia.com:8081/index.html
三、完整demo
1、node.js+socket.io:https://git.oschina.net/evan-xia/x_1604_NodejsSocketioChat.git
2、node.js+ws:https://git.oschina.net/evan-xia/x_1604_NodejsSocketWS.git
四、参考
1、http://www.plhwin.com/2014/05/28/nodejs-socketio/
2、http://my.oschina.net/yushulx/blog/309413
转载标明出处:https://blog.evanxia.com/2016/04/405