【问题标题】:is there a good way to save socket.io message history有没有保存socket.io消息历史的好方法
【发布时间】:2013-07-07 06:39:25
【问题描述】:

我想记录socket.io的消息历史,即两个用户交谈的内容,以备后用。是否有一些socket.io内置函数可以实现,如果没有,有什么好的方法来实现?

【问题讨论】:

    标签: sockets websocket socket.io


    【解决方案1】:

    首先,您需要一些方法来识别具有在用户断开连接时不会消失的唯一 ID 的用户,例如用户名或电子邮件地址。

    对话中的所有消息都应该以某种方式存储在服务器上,就像两个用户之间对话的“聊天对象”一样。

    定期地,当用户断开连接时,或每次“聊天对象”更改(例如,发送新消息)时,将“聊天对象”保存在您喜欢的任何类型的数据库中。您可以使用 JSON 序列化“聊天对象”,以您喜欢的任何方式保存它(例如,自定义文件、mysql 数据库或其他)。要序列化对象,请在节点服务器上使用以下代码:

    var chatString = JSON.stringify(theChatObject);
    

    将字符串与两个用户的唯一 ID 一起保存。因此,当相同的两个人之间开始新的对话时。您可以直接转到您的文件或数据库并检索旧的聊天对象,然后使用以下代码对其进行反序列化。

    var oldChat = JSON.parse(theRetrievedChatString);
    

    【讨论】:

    • 那么,如果我每次创建新消息时都尝试将“聊天对象”保存到数据库(即 mongodb)中会导致过多的开销吗?
    • “太多”取决于服务器将承受多少负载。如果这是一个问题,它可能有助于查看其他选项。但是,每次都将其保存到数据库中仍然是有益的,因为它可以降低消息丢失的风险。
    猜你喜欢
    • 2012-06-23
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 2011-03-09
    • 2022-08-04
    • 2023-03-30
    • 2018-03-24
    相关资源
    最近更新 更多