Meteor和C nopoll应用程序之间的连接丢失

时间:2015-01-20 14:13:29

标签: c meteor ping ddp

我使用nopoll(http://www.aspl.es/nopoll/)为我的C应用程序与Meteor进行通信。

流星定期发送一些ping消息。 当我的应用程序轮询websocket时,它会回复pong消息:一切都找到了。

接下来,为避免轮询,我将其替换为使用sigaction(SIGIO, ...)初始化的回调。

然后,当收到ping时,我发送pong,但有时,服务器停止发送ping,并且不能交换任何其他消息。

ping与关联的pong消息之间是否有任何超时。 是否有任何机制可以宣传自己的连接丢失,因为nopoll_conn_is_ok()nopoll_conn_is ready()始终是nopoll_true

1 个答案:

答案 0 :(得分:1)

很难说Meteor为何停止发送内容。但是,有两点值得考虑你的情况:

  1. 使用noPoll时,每次收到PING时都不必发送PONG,因为这是由noPoll的引擎自动完成的(请参阅nopoll_conn.c:2453中的nopoll_conn_get_msg()实现)。也许这会导致Meteor失败。

  2. 关于获取连接关闭通知,使用nopoll_conn_set_on_close(conn,handler,ptr)在连接关闭时收到通知。请参阅此处的工作示例:https://dolphin.aspl.es/svn/publico/nopoll/trunk/test/nopoll-regression-client.c

  3. 最诚挚的问候,