如何获取Stack Exchange聊天消息的精确时间戳?
获取指定消息ID的精确时间戳方案
- 给你几个实用思路参考:
- 缓存实时事件的时间映射:既然WebSocket、
/events和/new能返回精确时间戳,你可以在消息首次通过这些渠道推送时,把「消息ID-精确时间戳」的对应关系存在本地缓存(内存或数据库均可)里,后续查该消息时间直接从缓存取就行。这个方案对新消息完全有效,但没法覆盖已存在的历史消息。 - 尝试
/events的范围查询:部分聊天系统的/events端点支持按消息ID范围或时间范围拉取事件记录,你可以试试构造请求,传入目标消息ID的前后区间,说不定能捞到包含该消息精确时间戳的事件数据。 - 优化模糊时间的解析逻辑:如果上面的方法都走不通,那就只能解析
/history返回的模糊时间了。你可以结合当前日期、聊天服务的时区信息补全年月日,再把Sat 3:42 PM这类格式转换成精确时间戳。虽然繁琐,但可以封装成工具函数复用,比如先把星期和时分秒转成时间对象,再匹配最近的对应星期的日期,注意处理跨周的边界情况。
- 缓存实时事件的时间映射:既然WebSocket、
另外,你可以再仔细排查下master-chat.js里的内部方法,有些库会把这类查询逻辑藏在未对外暴露的私有方法里,要是能找到的话可以直接调用(注意版本兼容性问题)。
内容的提问来源于stack exchange,提问作者Seggan
相关产品推荐
相关产品推荐

