2016-04-03 137 views
0

使用事件机器和Ruby。目前我正在做一个游戏,在轮到它结束时它检查是否有其他用户在那里。当使用ws.send()向用户发送数据时,我如何检查用户是否真的获得了数据或者是替代解决方案?Ruby websocket检查用户是否存在

+0

通常情况下,您需要重新检查套接字以检查远程是否处于活动状态且未卡住。 – tadman

+0

ping是否有回调来检查是否发生响应。如真假? – ninetailschris

回答

2

由于该库不提供对底层协议元素的访问,因此您需要将元素添加到应用程序协议中才能执行此操作。一种典型的方法是为每个消息添加一个标识符,并对带有包含这些标识符的确认消息的消息作出响应。

请注意,这种方法只会帮助您更好地了解客户收到的内容。在出现错误的情况下,不保证特定的状态。一个例子是在客户端发送ACK之后丢失连接,但该服务没有收到它。

由于我刚才提到的复杂性,试图使大多数操作是幂等的 - 这可以在不损害系统的情况下重播并且在错误条件期间/之后容易重播通常更容易。您还可以找到一种方法来周期性地同步相关状态,以避免因数据/连接丢失而导致的轻微错误的长期延续。

+0

竖起大拇指。我找到了我的问题的答案,我使用socket.state来确定套接字是关闭还是打开,并根据该响应进行操作。 – ninetailschris