1、除了一個正常的伺服器還需要一個會話伺服器(websocket),利用node加socket.io來做
2、正常安裝Nginx
yum install nginx
3、Nginx的配置內容略微不同(主要server部分修改)
# For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/ user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; server { listen 80; server_name taqing.me www.taqing.me; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8000; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } }
4、全域性安裝node
(1)獲得資源(其中一個版本即可)
# 4.x curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - # 5.x curl --silent --location https://rpm.nodesource.com/setup_5.x | bash - # 0.10 curl --silent --location https://rpm.nodesource.com/setup | bash -
(2)安裝
yum install -y nodejs
5、直接在你要啟動的服務(***.js)裡安裝socket.io
npm install socket.io
6、然後就可以大概啟動js
(1)啟動
node server.js
(2)這裡貼上我的測試用js(這裡的埠要和nginx配置的埠相同)
/** * Created by zcwl123 on 2017/5/9. */ var app = require('http').createServer(handler), io = require('socket.io').listen(app), fs = require('fs'); app.listen(8000); io.set('log level', 1);//將socket.io中的debug資訊關閉 function handler (req, res) { fs.readFile(__dirname,function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200, {'Content-Type': 'text/html'}); res.end(data); }); } io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { io.sockets.emit('news', data); console.log(data); }); });
7、然後回到你的正常伺服器,放入你的客戶端,這裡也貼上我的測試用的(主要這裡的外網ip不需要埠)
<!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Ssocket</title> <script src="http://119.29.**.***/socket.io/socket.io.js"></script> </head> <body> <div></div> <input type="text"/> <button>button</button> <script type="text/javascript"> var input = document.getElementsByTagName("input")[0]; var button = document.getElementsByTagName("button")[0]; var div = document.getElementsByTagName("div")[0]; var socket = io.connect('http://119.29.**.***'); var data; socket.on('news', function (data) { div.innerHTML=data.my; console.log(data); }); button.onclick=function(){ socket.emit('my other event', { my: input.value }); }; </script> </body> </html>
8、保持node server.js狀態下,然後登陸html就可以,就完成websocket了
9、如果要一直node server.js,並且不能退出所以也不算完全完成,下面在安裝一個node的forever外掛
npm install forever -g
10、下面是forever的一些操作
// 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 檔案改動監聽並自動重啟 // 1. 監聽當前資料夾下的所有檔案改動(不太建議這樣) 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