是否有一种保存socket.io消息历史记录的好方法

时间:2013-07-07 06:39:26

标签: sockets websocket socket.io

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

1 个答案:

答案 0 :(得分:4)

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

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

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

var chatString = JSON.stringify(theChatObject);

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

var oldChat = JSON.parse(theRetrievedChatString);