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