我一直在阅读 websockets 中的 ping/pong 消息以保持连接有效,但我不确定它们是什么。它是一种独特的帧类型吗? (我没有在 chrome 中的 javascript WebSocket 对象上看到任何与乒乓球相关的方法)。或者它只是一种设计模式(例如,我从字面上向服务器发送“ping”或任何其他字符串并让它响应)。乒乓球是否与延续帧有关?
我问的原因是我正在使用在 Mongrel2 后面运行的 python 框架,所以我想知道是否有一种方法可以向 Mongrel2 发送特定的 ping/pong 消息,告诉它在不需要我的 python 应用程序的情况下保持连接担心它。我想这类似于为它提供单独的 HTTP 方法。我想专用的 ping/pong 消息框架可能比字符串“ping”更简单(服务器和网络上的负载更少),尽管这可能无关紧要。
编辑:我刚刚查看了 RFC 6455 ,看起来 Ping 和 Pong 绝对是具有自己的操作码的控制帧类型。那么如何在 Chrome 中从 javascript 发送 Ping 帧呢?
原文由 danny 发布,翻译遵循 CC BY-SA 4.0 许可协议
没有用于发送 ping 帧或接收 pong 帧的 Javascript API。您的浏览器是否支持此功能。也没有 API 来启用、配置或检测浏览器是否支持和正在使用 ping/pong 帧。有 关于为此创建 Javascript ping/pong API 的讨论。未来 ping 有可能是可配置/可检测的,但 Javascript 不太可能直接发送和接收 ping/pong 帧。
但是,如果您同时控制客户端和服务器代码,那么您可以轻松地在更高级别添加 ping/pong 支持。如果您还没有的话,您将需要在您的消息中使用某种消息类型的标头/元数据,但这很简单。除非您计划每秒发送数百次 ping 或同时有数千个客户端,否则您自己完成的开销将非常小。