我正在通过 EventMachine 使用 WebSockets 在 Ruby 上构建服务器。
假设用户 Carl 要汽车。
向 CarManager 请求 ID 为“7”的汽车。CarManager 创建一个 Car 实例,Car 从 Mongo 数据库中加载自身(提供了 ID)。Car "7" 像缓存一样存储在 CarManager 中,只要 Carl 或其他任何人继续使用或请求它。然后通过 WebSocket 将 Car 发送给 Carl。我将卡尔的 WS 存储在某个地方。
如果两个用户,比如说,Lenny 和 Carl,都在“确切”的时间要求 Car id “7”,会怎样。CarManager 会因为在这两种情况下都找不到 Car 7 的缓存版本,因此两次都从数据库中获取并实例化它,或者这两个 WebSocket 请求中的一个将首先处理,然后第二个将使用缓存的版本?
WebSockets 的整个异步事情让我有点困惑。感谢您对此的任何见解!