Ruby websocket检查用户是否存在

时间:2016-04-03 00:57:28

标签: ruby websocket sinatra eventmachine

使用Event-machine和Ruby。目前我正在制作一个游戏,在转弯结束时检查其他用户是否存在。使用ws.send()向用户发送数据时,如何检查用户是否实际获得了数据还是替代解决方案?

1 个答案:

答案 0 :(得分:2)

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

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

由于我刚刚提到的复杂性,通常更容易尝试使大多数操作具有幂等性 - 能够在不损害系统的情况下重放,并且在错误条件期间/之后容易地重放。您还可以找到一种方法来定期完全同步相关状态,以避免数据/连接丢失引起的小错误的长期延续。