网页websocket正常和C#websocket-csharp 断开连接问题
2016-10-08 22:42
471 查看
最近在做一个pc端的 websocket客户端。从网上找了 websocket-csharp 这个包。
一切正常。。。
可是后来发现websocket 在没有数据推送的情况下过一段时间,会没有数据推送。
但我的websocket 有重连机制。就是在OnClose 事件里重新连接websocket。
后来经过测试发现 ,客户端websocket 没有收到 close frame,所以没有触发 onclose 事件。
可是 在网页端的 websocket 测试正常,1小时后断开,触发onclose 事件 ,重连。。。
我下载了 wireshark。进行 抓包。
发现 网页端的websocket 在没有数据推送的情况下,还会不断的发送 和接受tcp 数据
而pc端的websocket 没有。
后来研究了tcp 协议 。原来网页端的 tcp 打开了keep-alive 模式。它会不断的向服务端发送请求,来保持连接。
而pc端的没有。
到此 ,我把pc端 websocket 中 创建tcpclient 的地方加了:_tcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inArray, null);
使pc端 tcp 也开启了keep-alive模式;
结果和网页端一样了。
总结,网页端的websocket 建立的tcp 为keep-alive的,而websocket-csharp 却没有所以要手动的调用此包里提供的ping函数,来保持与服务端的连接。。。
一切正常。。。
可是后来发现websocket 在没有数据推送的情况下过一段时间,会没有数据推送。
但我的websocket 有重连机制。就是在OnClose 事件里重新连接websocket。
后来经过测试发现 ,客户端websocket 没有收到 close frame,所以没有触发 onclose 事件。
可是 在网页端的 websocket 测试正常,1小时后断开,触发onclose 事件 ,重连。。。
我下载了 wireshark。进行 抓包。
发现 网页端的websocket 在没有数据推送的情况下,还会不断的发送 和接受tcp 数据
而pc端的websocket 没有。
后来研究了tcp 协议 。原来网页端的 tcp 打开了keep-alive 模式。它会不断的向服务端发送请求,来保持连接。
而pc端的没有。
到此 ,我把pc端 websocket 中 创建tcpclient 的地方加了:_tcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inArray, null);
使pc端 tcp 也开启了keep-alive模式;
结果和网页端一样了。
总结,网页端的websocket 建立的tcp 为keep-alive的,而websocket-csharp 却没有所以要手动的调用此包里提供的ping函数,来保持与服务端的连接。。。
相关文章推荐
- C# socket连接断开问题
- tomcat8+websocket+myelicpse 创建websocket连接报404问题
- 完美解决spring websocket自动断开连接再创建引发的问题
- C#进行SOCKET开发---当连接与与服务器断开时的问题
- C#使用Socket快速判断数据库连接是否正常的方法
- SAP的程序用客户端连接正常,用C#连接死活连不上问题的解决
- spring websocket自动断开连接再创建引发的问题解决方案
- SAP的程序用客户端连接正常,用C#连接死活连不上问题的解决
- [JavaWeb]JavaSocket获取网页源代码遇见的问题
- 正常断开连接情况下,判断非阻塞模式socket连接是否断开
- SAP的程序用客户端连接正常,用C#连接死活连不上问题的解决
- android网络连接经常出现Timeout,NetworkOnMainThreadException问题,手动浏览器访问web地址正常
- 关于苹果手机地址不能连接到正常网页问题
- websocket自动断开连接问题
- 使用wireshark抓包分析浏览器无法建立WebSocket连接的问题(server为Alchemy WebSockets组件)
- C#客户端与Java程序使用socket连接并通信的兼容问题
- C# 中FtpWebRequest 类NetworkCredential多次连接认证的问题
- 关于socket编程中服务器端如何检测客户端连接断开的问题
- c#.net web.config 连接sql2005实例名带'\'的问题
- C#编写socket客户端,服务器断开连接时客户端报异常