Nginx实现Websocket代理

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值