背景: 我正在使用ASP.Net学习websockets。我有一个应用程序,我使用心跳来确保客户端仍然连接。在我的应用程序中,我会每隔几秒发送一次心跳。在我阅读期间,我发现我可以使用乒乓来实现类似的功能。因此经过一些调查后我发现我可以将ping配置为IIS的一部分。在我的测试过程中,虽然我注意到ping仅在连接空闲时才发送,而不是像我的心跳一样每隔几秒钟。
问题: 有没有办法让IIS每隔几秒发送一次,而不是只在连接空闲时发送?或者我唯一的选择是实现自定义ping / pong逻辑?
答案 0 :(得分:2)
不,没有办法改变这一点。配置仅限于https://www.iis.net/configreference/system.webserver/websocket
原因是,当确定连接不是空闲时,没有用于发送PING帧,因为System.Net.WebSockets API无论如何都不允许您访问PING / PONG。我认为这是错误的,因为您应该能够使用PING来计算连接延迟(因为PONG将回显PING发送的任何内容,您可以使用时间戳),但这就是它的方式。
所以是的,在应用程序级别实现自己的PING / PONG是你唯一的选择。