websocket实现在HTTP连接的基础上,并且通过HTTP的upgrade协议头将连接从HTTP升级到websocket。这样就可以实现多次双向通信,也就是客户端能向服务端主动发送请求,服务端也可以向客户端发送请求。直到连接关闭
1、部署nodejs环境
安装nodejs
yum -y install nodejs
修改虚拟机的环境变量
vim /etc/profile
## 在文件的末尾加上两行配置 ##
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
查看nodejs的版本
node -v #查看nodejs版本的命令
v10.13.0
安装websocket模块的工具npm并使用npm来安装一些nodejs的工具
yum -y install npm
mkdir /opt/websocket #创建一个存放websocket的目录
npm install ws #安装websocket的模块
npm install -g wscat #安装测试websocket的客户端工具
vim server.js #创建一个脚本文件
console.log("Server started");
var Msg = '';
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 8010});
wss.on('connection', function(ws) {
ws.on('message', function(message) {
console.log('Received from client: %s', message);
ws.send('Server received from client: ' + message);
});
});
node ./server.js #后台启动node服务
Server started #表示服务已经开启
2、另外开启一个终端来进行修改Nginx配置
vim /etc/nginx/conf.d/websocket_proxy.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 127.0.0.1:8010;
}
server {
listen 8020;
access_log /var/log/nginx/test_websocket.access.log main;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
3、测试
wscat --connect ws://127.0.0.1:8020
connected (press CTRL+C to quit) #表示已经成功连接到后端的nodejs
> csdn #向服务端输入一些信息,比如输入csdn
< Server received from client: csdn #向服务端发送内容的同时也会向客户端返回这个信息
disconnected (code: 1006)
在刚刚开启nodejs服务的终端里会提示从客户端输入的信息
Received from client: csdn