【总结】Ubuntu下配置Node.js + websocket

Posted on Posted in 计算机2,690 views

零、系统环境

1、系统提供商:腾讯云。详细参数如下:

l   操作系统   Ubuntu Server 14.04.1 LTS 64

l   CPU 1

l   内存 1GB

l   系统盘       disk-p2yqwai6    20GB(云硬盘)

l   公网带宽   1Mbps

2Node.js版本:node-v6.0.0

3websocket服务端:socket.io、WS

一、Node.js安装

1.1Node.js介绍

1node.js是一个javascript解析器。

2、官网:https://nodejs.org/en/

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.1websocket服务端选择

1node-websocket-sever

    websocket还没有成为标准,还在不停地修正中,chrome 14采用了drafts 10 导致drafts 75, 76 无法使用。上面那个连接的版本已经支持dratf 10,可以在chrome 14以上运行了。下载的东西是一个库,不用安装。下面开始使用这个库。

2node-websocket

需要依赖于底层的C++,Python的环境,支持以node做客户端的访问。

3faye-websocket-node

faye软件框架体系的一部分,安装简单,不需要其他依赖库。

4socket.io

功能强大,支持集成websocket服务器端和Express3框架与一身。Socket.IO支持4种协议:WebSockethtmlfilexhr-pollingjsonp-polling,它会自动根据浏览器选择适合的通讯方式

2.2socket.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、安装环境

安装expresssocket.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

1.png

三、完整demo

1node.js+socket.iohttps://git.oschina.net/evan-xia/x_1604_NodejsSocketioChat.git

2node.js+wshttps://git.oschina.net/evan-xia/x_1604_NodejsSocketWS.git

四、参考

1http://www.plhwin.com/2014/05/28/nodejs-socketio/

2http://my.oschina.net/yushulx/blog/309413

 


转载标明出处:https://blog.evanxia.com/2016/04/405