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

当然,我们调试时异常设置默认是不勾选这个的。所以不影响正常调试。
但小伙伴发现,依然会影响界面卡顿,尤其是书写性能受影响。
所以,需要确认判断服务端是否已启动,再让客户端连接服务端,规避掉这个异常。
websocket中没有这样属性,能获取到服务端启动的状态。
看了下webSocket的内部机制,是通过IP+端口TCP进行通信的。所以可以查看端口占用情况来判断:

如上图中,Listening的2710端口是服务端,下面Established表示和服务端已建立连接的2个客户端。
也可以用C#判断端口是否占用:
1 /// <summary>
2 /// 判断服务端是否已启动
3 /// </summary>
4 /// <returns></returns>
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 }
进程间通信WebSocket 服务端未启动时,客户端重连报错的更多相关文章
- C# WebSocket 服务端示例代码 + HTML5客户端示例代码
WebSocket服务端 C#示例代码 using System; using System.Collections.Generic; using System.Linq; using System. ...
- tomcat启动时加载配置文件 报错
原因: @serice("customerService") 和@Repository(value="customerDao") 解决: 直接@ ...
- asp.net网站作为websocket服务端的应用该如何写
最近被websocket的一个问题困扰了很久,有一个需求是在web网站中搭建websocket服务.客户端通过网页与服务器建立连接,然后服务器根据ip给客户端网页发送信息. 其实,这个需求并不难,只是 ...
- nodejs搭建简单的websocket服务端
创建websocket服务端使用了nodejs-websocket ,首先要安装nodejs-websocket,在项目的目录下: npm install nodejs-websocket 1.搭建w ...
- WebSocket服务端
http://blog.csdn.net/qq_20282263/article/details/54310737 C# 实现WebSocket服务端 原创 2017年01月10日 09:22:50 ...
- ZooKeeper单机服务端的启动源码阅读
程序的入口QuorumPeerMain public static void main(String[] args) { // QuorumPeerMain main = new QuorumPeer ...
- Netty服务端的启动源码分析
ServerBootstrap的构造: public class ServerBootstrap extends AbstractBootstrap<ServerBootstrap, Serve ...
- SuperWebSocket实现服务端和WebSocket4Net实现客户端
SuperWebSocket实现服务端和WebSocket4Net实现客户端具体实现如下: SuperWebSocket实现服务端 注:本作者是基于vs2019 enterprise版本,所有项目均为 ...
- windows10 64位 安装mysql服务端 并使用navicat客户端链接 掉的一堆坑
1.目的 安装mysql服务端 并使用navicat客户端链接 2.过程 1)下载mysql服务端 下载过程(参考https://blog.csdn.net/youxianzide/article/d ...
随机推荐
- Hyperkernel验证实验的复现与z3环境初识
Hyperkernel验证实验的复现与z3环境初识 前言 建议顺序阅读本文!禁止转载.--@CarpVexing(https://www.cnblogs.com/CarpVexing/p/159483 ...
- [问题解决]Win32- OPENFILENAME 结构体报错或者找不到情况
问题:OPENFILENAME结构体.GetOpenFileName()和 GetSaveFileName()函数都找不到了,在头文件<framework.h>中已经包含<windo ...
- CH573 CH582 CH579外设ADC例程讲解
在adc的例程中共有六种AD测量,1.温度测量,2.单通道测量,3.DMA单通道测量,4.差分通道测量,5.触摸按键测量,6.中断方式单通道测量,接下来我们逐一描述. 粗调:粗调使得用0db测量VIN ...
- python基础学习——数据容器
1.数据容器相当于C的数组 有list,tuple(元组),str,set(集合),dict五种数据容器 2.list(列表) 列表中可存在不同的数据类型,可嵌套 #反向索引 name_list = ...
- 编译GO报错:cgo: C compiler
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH ...
- MQ(部署模式)
MQ部署模式 1.master-slave部署模式 1)shared filesystem Master-Slave部署方式 主要是通过共享存储目录来实现master和slave的热备,所有的Acti ...
- 记录下老dropbox的使用
32-bit: wget -O - "https://www.dropbox.com/download?plat=lnx.x86" | tar xzf - 64-bit: wget ...
- Java方法-什么是方法
Java方法-什么是方法 package com.andy.base.Andy.operator.method; public class Demo01 { //main方法 public stati ...
- 【NLP 系列】Bert 词向量的空间分布
作者:京东零售 彭馨 1. 背景 我们知道Bert 预训练模型针对分词.ner.文本分类等下游任务取得了很好的效果,但在语义相似度任务上,表现相较于 Word2Vec.Glove 等并没有明显的提升. ...
- 深入了解 JavaScript 内存泄漏
作者:京东零售 谢天 在任何语言开发的过程中,对于内存的管理都非常重要,JavaScript 也不例外. 然而在前端浏览器中,用户一般不会在一个页面停留很久,即使有一点内存泄漏,重新加载页面内存也会跟 ...