【发布时间】:2013-03-30 16:54:15
【问题描述】:
我正在为一个网站编写一个 websocket++ 服务器,该网站主要是几页,其中包含您在任何社交新闻网站上看到的文章列表或堆栈上的问题链接;但是,我通过人造按钮和滑块动态更改显示的文章,并使用 websocket 推送更新它们。
当然,我需要存储每个连接,但我还希望网站记住每个用户在每个页面上的位置。这是每页文章的索引位置。
如果我使用(伪代码):map<sessionid, map<page, index>>,我可以直接找到index吗?如果没有,我应该使用什么代码来实现这一点?
如果可以,请在最少代码行数和最高性能之间取得平衡。
多个sessionids
抱歉,忘记了很多人可能会在每个page 中查看相同的index,所以它需要输出一个set(除非有更好的东西),只有sessionids。
因此,在伪代码中,它可能看起来像 findPageIndex(map<sessionid, map<page, index>>, page, index) 并返回 set<sessionid>。
pages
每次创建会话时,每个page 的indexes 将默认为0,直到用户更改它们。
推理
这种格式的目的是在其他用户通过投票、cmets 等更改文章时更新用户。我希望将新数据立即发送回查看这些文章的客户。
所以:
- User1 更新数据库中的 article1
- 服务器找到所有查看文章 1 的用户
- 服务器会更新所有查看文章 1 的用户
这是我对堆栈和其他高级网站如何做到这一点的最佳猜测。
【问题讨论】:
-
“直接”是什么意思?
-
为什么不只使用两张地图。一个用于
map<sessionid, page>,另一个用于map<sessionid, index> 或者将两个页面/索引都保存在“位置”结构中,以便您可以说map<sessonid, location>? -
@selbie 因为我想同时存储多个页面的信息。我正在使用 jQuery 做一个水疗中心,所以我需要始终存储所有页面的信息,以便在它们翻阅页面时快速。
-
@AndyProwl 可能是多余的,但我知道可以找到密钥但找不到值
-
所以你想返回所有
sessionIds,在映射中有一对(page, index)与sessionId关联?
标签: c++ map websocket find key-value