深入理解Websocket如何实现消息提醒以及数据转发?

文章介绍了Websocket在实现消息提醒和数据转发中的作用,特别是通过wss(WebSocket+SSL)确保安全连接。它详细讲解了nginx如何作为代理,将wss协议转换为ws协议与Workerman的websocket服务进行交互。同时,文章提供了配置nginx支持SSL和wss的示例,包括SSL证书的设置,以及前端通过wss和ws连接websocket的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深入理解Websocket如何实现消息提醒以及数据转发?

前言

【http协议】:通过ws进行转发
【https协议】:通过wss进行转发

一、对wss与nginx代理wss的理解

1、wss

wss协议实际是websocket+SSL,就是在websocket协议上加入SSL层,类似https(http+SSL)。

2、利用nginx代理wss

【通讯原理及流程】
(1)、客户端发起wss连接连到nginx
(2)、nginx将wss协议的数据转换成ws协议数据并转发到Workerman的websocket协议端口
(3)、Workerman收到数据后做业务逻辑处理
(4)、Workerman给客户端发送消息时,则是相反的过程,数据经过nginx/转换成wss协议然后发给客户端

二、Nginx配置SSL和wss

Nginx配置文件

map $http_upgrade $connection_upgrade {
    		default upgrade;
    		'webscoket' upgrade;
   }  #这一部分配置是我解决这个问题的最关键部分!!!
server

{
  listen 80; #http请求
  listen 443 ssl http2;  #https请求
  server_name **.admin.bdlhcloud.com;  #域名
  index index.php index.html index.htm default.php default.htm default.html;
  root /www/wwwroot/*.admin.bdlhcloud.com;
  
  ssl_certificate    /www/server/panel/vhost/cert/*.admin.bdlhcloud.com/*.pem;   #SSL证书
  ssl_certificate_key    /www/server/panel/vhost/cert/*.admin.bdlhcloud.com/*.key;   #SSL证书
  ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
  ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
  ssl_prefer_server_ciphers on;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  add_header Strict-Transport-Security "max-age=31536000";
  error_page 497  https://$host$request_uri;
  
  location /websocket {
  proxy_pass http://服务器ip:端口;  #切记!!开放端口!!
  proxy_http_version 1.1;
  proxy_set_header   Upgrade             $http_upgrade;
  proxy_set_header   Connection  "Upgrade";
  proxy_set_header   X-Real-IP        $remote_addr;
  }
  
  }

三、Nginx配置文件添加SSL证书

在这里插入图片描述

四、通过wss和ws连接websocket

1、wss连接:

前端访问地址:wss://*.admin.bdlhcloud.com/websocket

在这里插入图片描述

2、ws连接:

前端访问地址:ws://*.admin.bdlhcloud.com/websocket

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值