3

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

4

1 回答 1

7

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

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

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

var chatString = JSON.stringify(theChatObject);

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

var oldChat = JSON.parse(theRetrievedChatString);
于 2013-07-07T11:12:17.380 回答