我一直在读websockets中的ping/pong消息,以保持连接的活动状态,但我不确定它们是什么。它是一种不同的帧类型吗?(我在chrome中的javascript WebSocket对象上看不到任何与乒乓相关的方法)。或者它只是一个设计模式(例如,我直接向服务器发送"ping“或任何其他字符串,并让它响应)。乒乓球和连续帧有什么关系吗?
我问这个问题的原因是我使用的是在Mongrel2背后运行的python框架,所以我想知道是否有一种方法可以向Mongrel2发送特定的ping/pong消息,告诉它保持连接正常,而我的python应用程序不需要担心这个问题。我想,这类似于对它使用单独的HTTP方法。我想象一个专用的ping/pong消息帧可能比字符串"ping“更简单(服务器和网络上的负载更少),尽管这可能不会有太多问题。
编辑:我刚刚看了RFC 6455,看起来Ping和Pong绝对是控制帧类型,它们有自己的操作码。那么如何在Chrome中从javascript发送Ping帧呢?
发布于 2012-05-14 23:41:30
没有用于发送ping帧或接收pong帧的Javascript API。您的浏览器是否支持这一点。也没有API来启用、配置或检测浏览器是否支持或正在使用ping/pong帧。discussion about creating a Javascript ping/pong API就是用来做这个的。未来ping可能是可配置/可检测的,但Javascript不太可能直接发送和接收ping/pong帧。
但是,如果您同时控制客户端和服务器代码,则可以轻松地在更高级别添加ping/pong支持。您需要在消息中包含某种类型的消息类型标头/元数据(如果您还没有的话),但这非常简单。除非您计划每秒发送数百次ping,或者同时有数千个客户端,否则您自己做这件事的开销将非常小。
发布于 2012-05-15 17:40:47
Ping只能从服务器发送到客户端,浏览器应尽快使用Pong OpCode自动应答。所以在更高的层次上你不必担心这一点。
虽然并不是所有的浏览器都像他们想象的那样支持标准,但它们在实现这种机制时可能会有一些差异,甚至可能意味着没有Pong响应功能。但就我个人而言,我使用的是乒乓球/乒乓球,从来没有见过客户端不实现这种类型的OpCode和在低层客户端实现自动响应的客户端。
https://stackoverflow.com/questions/10585355
复制相似问题