WebSocket 服务端未启动时,客户端重连报错

当WebSocket服务端未启动时,我们在客户端申请连接,会报 System.Net.Sockets.SocketException 异常。

WebSocket 服务端未启动时,客户端重连报错

当然,我们调试时异常设置默认是不勾选这个的。所以不影响正常调试。

但小伙伴发现,依然会影响界面卡顿,尤其是书写性能受影响。

所以,需要确认判断服务端是否已启动,再让客户端连接服务端,规避掉这个异常。

websocket中没有这样属性,能获取到服务端启动的状态。

看了下webSocket的内部机制,是通过IP+端口TCP进行通信的。所以可以查看端口占用情况来判断:

WebSocket 服务端未启动时,客户端重连报错

如上图中,Listening的2710端口是服务端,下面Established表示和服务端已建立连接的2个客户端。

也可以用C#判断端口是否占用:

1     ///
 2     /// 判断服务端是否已启动
 3     ///
 4     ///
 5     public static bool CheckServerListening()
 6     {
 7         var port = ChannelCustomText.Port;
 8         IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
 9         IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners();
10         foreach (IPEndPoint endPoint in ipEndPoints)
11         {
12             if (endPoint.Port == port)
13             {
14                 return true;
15             }
16         }
17         return false;
18     }

Original: https://www.cnblogs.com/kybs0/p/16167030.html
Author: 唐宋元明清2188
Title: WebSocket 服务端未启动时,客户端重连报错

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543973/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 1.19(设计模式)策略模式

    策略模式,定义一组算法(代码),将它们封装起来,使其可以相互替换。 策略模式首先要针对不同的情况(算法、代码)定义不同的策略类。 首先看个一段代码 要想插入代码有什么方法呢,我们可…

    Java 2023年6月8日
    075
  • 拜托,面试官别问我「位图」了

    这是之前面试的时候面试官问到过的一个问题,今天正好看到 布隆过滤器,写篇文章总结一下 我们先看一下流程,流程懂了,问题就解决 90%了 我们都知道一个 int 占 4字节,一个字节…

    Java 2023年6月9日
    090
  • Java学习 (13)Java流程控制篇(04)break & continue & goto

    break & continue break 语法实例 continue 语法实例 break 与 continue 的差异 goto 练习 参考视频(狂神说Java) b…

    Java 2023年6月8日
    084
  • 微服务 mybatis-plus 添加日志输出

    spring配置 spring: redis: database: 6 host: 192.168.8.248 port: 6379 password: datasource: d…

    Java 2023年5月30日
    080
  • Docker(一):初识

    1、什么是Docker Docker 是一个基于Go 语言并遵从Apache2.0协议开源的、轻量级的容器引擎,主要运行于 Linux 和 Windows,用于创建、管理和编排容器…

    Java 2023年6月16日
    074
  • springboot对LocalDateTime类型入参和接口返回值格式化

    背景 使用过java8的朋友应该都知道LocalDateTime类型,它作为全新的日期和时间API ,对比Date类型有着很大的优势,极大的方便了我们对于时间和日期的操作。不过,如…

    Java 2023年5月30日
    090
  • Html5+Css3 Banner Animation 多方位移动特效

    背景:朋友问我小米官网的mi4的特效会做吗,可能新接的一个小网站需要用到。一直有打算研究H5C3的一些效果,趁此机会,赶紧学习一下! 效果:如图 素材 HTML: STYLE: J…

    Java 2023年6月9日
    071
  • 同步IO, 异步IO的理解

    什么是IO? 在计算机中无时无刻不存在着对数据的访问和读取(数据都存储在物理的媒介上,例如寄存器,高速缓存,内存,磁盘,网卡等等),这些操作被称为IO。 阻塞IO 当用户线程发起I…

    Java 2023年6月6日
    0105
  • session 和 cookie (转)

    会话(Session)跟踪是Web程序中常用的技术,用来 跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。 Cookie通过在客户端记录信息确定用户身份, S…

    Java 2023年5月30日
    084
  • Java中Arrays数组工具类的使用全解

    本文几乎涵盖了所有的Arrays工具类( 基于Java 11 )的方法以及使用用例,一站式带你了解Arrays类的用法,希望对大家有帮助…

    Java 2023年6月7日
    085
  • Maven基础学习笔记

    Maven基础学习笔记 下载链接 官网:https://maven.apache.org/ 所有版本:https://archive.apache.org/dist/maven/m…

    Java 2023年6月5日
    097
  • Spring Boot下的一种导出Excel文件的代码框架

    1、前言 ​ 在Spring Boot项目中,将数据导出成Excel格式文件是常见的功能。与Excel文件导入类似,此处也用代码框架式的方式实现Excel文件导出,使得代码具有可重…

    Java 2023年6月14日
    078
  • 我的虚拟机挂了!怎么把镜像里面的数据找回来?

    创建了一个虚拟机,不知道为什么挂了,重启也启动不了,VNC也登不上去,强行关机后再也启动不起来了,开机一大堆错误,可是里面还有很重要的数据啊,怎么办,怎么办,谁能救救我! 下面分析…

    Java 2023年5月30日
    091
  • Springboot国际化信息(i18n)解析

    国际化信息理解 国际化信息也称为本地化信息 。 Java 通过 java.util.Locale 类来表示本地化对象,它通过 “语言类型” 和 &#8220…

    Java 2023年5月30日
    0107
  • 搞透 IOC,Spring IOC 看这篇就够了!

    IOC与AOP属于Spring的核心内容,如果想掌握好Spring你肯定需要对IOC有足够的了解 @mikechen IOC的定义 IOC是Inversion of Control…

    Java 2023年6月15日
    096
  • 数据结构中点链表的插入操作

    Status listinsert(Linklist &L,int i,ElemType e) //bool vs status :在函数需要有返回值的时候,既可以使用bo…

    Java 2023年6月5日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球