创建WebSocket测试项目

发布时间:2025-06-24 20:16:12  作者:北方职教升学中心  阅读量:165


启动测试。nginx.在conf配置文件中,添加以下配置内容:

#user  nobody;worker_processes  1;error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  info;pid        logs/nginx.pid;events {    worker_connections  1024;}http {    include       mime.types;    default_type  application/octet-stream;    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  logs/access.log  main;    sendfile        on;    #tcp_nopush     on;    #keepalive_timeout  0;    #gzip  on;    keepalive_timeout  65;    # 定义变量󿀌两种请求协议兼容HTTP和WebSocket    map $http_upgrade $connection_upgrade {        default          keep-alive;  # 默认 keep-alive,表示HTTP协议。

第三步:寻找在线Websocket测试工具,查看【ws://127.0.0.1:9990/demo/websocket】能否成功连接?

我在这里用的是【https://wstool.js.orgWebsocket在线测试工具,如下图所示,我的后端接口地址是[/demo/websocket】,location配置为[//websocket】肯定不行。创建WebSocket测试项目。综上所述,我当地创建了一个WebSocket测试项目,如下所示:

  • 1.4、#xff0c;例如:让客户每30s向服务器发送一次信息,客户端向服务端发送消息,然后Nginx就知道这个WebSocket连接是有用的,它不会断开。创建WebSocket测试项目。

    浏览器客户端方向【ws://127.0.0.1:9990/demo/websocket】建立连接󿀌Nginx服务器接收后,location定义的规则将与#xff0匹配c;此时会将【ws://127.0.0.1:9990/demo/websocket】地址转发到【ws://127.0.0.1:8880/demo/websocket】这个地址�这就完成了WebSocket接口的转发功能。

    起初,

    在这种情况下�如果我们的客户端再次发送消息󿀌会抛出异常,因为Websocket连接已经断开,不能发消息󿀌那么如何解决这个问题࿱呢?f;??

    针对上述问题,可以有以下两种解决方案:

    1.5.1、

    这里有一个问题,不止一个后端服务,有可能启动两个服务,使用不同的端口来区分,客户端不知道填写哪个port端口,后来想到的解决方案是通过Nginx服务器转发WebSocket接口,让Nginx决定调用哪个Websocket接口,而客户端只需要与Nginx服务器交互即可。

    1.5、WebSocket超时问题

    Nginx配置󿀌默认情况下�WebSocket接口的超时时间为60s༌如果在60s中,没有使用Websocket发送消息,此时将断开WebSocket连接。

    。我的后端接口地址是[/demo/websocket】,location配置为[//websocket】肯定不行。

    1.5、WebSocket接口无法转发。Nginx配置WebSocket。设置超时间。WebSocket接口无法转发。

案例下载地址:【https://download.csdn.net/download/qq_39826207/88883292】、到此,nginx服务器转发WebSocket接口配置完成。
  • 第一步:启动本地Websocket测试项目。#xff1a;

    从上图中�我们可以知道󿀌Websocket接口服务提供8880端口󿼌9990端口࿰连接到客户端c;如果端口不一致,,本文结束了,主要介绍如何通过Nginx服务器将客户端的WebSocket接口转发到后端服务。客户端请求地址。

    一、设置超时间。客户请求地址。

    1.3、

    注意:假设超时时间是60s,30s后没有通信󿀌按理说,30s后没有通信󿀌断开连接,但是, 'websocket' upgrade; # 若是 websocket 请求,则升级协议 upgrade。

    1.5、

    案例下载地址:【https://download.csdn.net/download/qq_39826207/88883292】。

  • 为了让Nginx能够代理转发Websocket接口󿀌我们需要为Websocket接口地址配置location信息,将proxy_pass转发到特定的后端接口服务。启动测试。Nginx配置内容。

    为了模拟Nginx能否成功转发Websocket接口󿀌在这里,,ip和port是后端服务提供的,/xxx/yyyy是后端服务中提供的特定WebSocket接口地址。WebSocket超时问题。,Websocket仍成功连接,这说明我们配置的Nginx转发功能已经成功。
  • 第二步:启动Nginx服务。
  • Nginx提供【proxy_read_timeout】属性,该属性可用于设置websocket接口的超时时间,默认为60s,然后我们可以将其设置为5分钟󿀌如下所示,后端接口服务提供。我参考了一些在线配置,location后面使用的[/websocket】,发现怎么也转发不了,测试后才知道,那些在线配置󿀌它们对应的后端Websocket接口地址[/websocket】,所以他们可以转发成功。建立心跳机制(推荐)


    Nginx配置WebSocket。如果客户端向服务端发送消息󿀌此时,超时时间将重新计算,超时时间又会变成60s。

    1.5.2、注意点:location后面定义的地址应该和后端接口提供的websocket地址完全一样,不能使用模糊匹配󿀌否则,

    注意:上述配置中�有两个内容需要配置,见下图中的红框内容:

    1.2、

    注意:不建议使用这种配置󿀌由于proxy__read_timeout属性治标不治本c;5分钟以上还是没有通讯怎么办???连接还会断开吗?

    1.5.2、

    1.5.1、后端接口服务提供。# 例如:我在这里提供的WebSocket接口地址是 /demo/websocketlocation /demo/websocket { proxy_pass http://127.0.0.1:8880; # 转发到后端接口 proxy_read_timeout 300s; # 设置超时时间󿀌默认是60s proxy_http_version 1.1; proxy_set_header Host $host; # 不要错过这个配置,必须要 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade;}。

    1.2、

    目录。

    今天的工作,遇到需求,这种需求可能是前端和后端需要Websocket通信,因为Websocket接口,客户端需要知道通信的接口地址,WebSocket接口的地址格式为:【ws://ip:port/xxx/yyy】。

    这篇文章�主要介绍如何通过Nginx服务器将客户端的WebSocket接口转发到后端服务[知识星球]。 # 例如:我在这里提供的WebSocket接口地址是 /demo/websocket location /demo/websocket { proxy_pass http://127.0.0.1:8880; # 转发到后端接口 proxy_read_timeout 20s; # 设置超时时间󿀌默认是60s proxy_http_version 1.1; proxy_set_header Host $host; # 不要错过这个配置,必须要 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }}。

    • 注意点:location后面定义的地址应该和后端接口提供的websocket地址完全一样,不能使用模糊匹配󿀌否则,

      1.3、

      1.4、WebSocket超时问题。建立心跳机制(推荐)最好的机制是让客户端和服务器之间,心跳通信每隔一段时间进行一次,Nginx配置内容。

      1.1、配置内容如下a;

      # Websocket完整地址写在这里, } server { listen 9990; # Websocket完整地址写在这里,