2013-07-07 33 views

回答

2

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

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

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

var chatString = JSON.stringify(theChatObject); 

与这两个用户的唯一ID一起保存的字符串。所以,当两个人开始新的谈话时。你可以去你的文件或数据库,并检索旧的chatobject,并用下面的代码反序列化它。

var oldChat = JSON.parse(theRetrievedChatString); 
+0

那么,如果我在每次创建新消息时尝试将“聊天对象”保存到数据库(即mongodb),会导致太多开销? – Julian

+0

“太多”取决于服务器将要承受多少负载。如果这是一个问题,它可能有助于查看其他选项。但是,每次将它保存到数据库中都可能是有益的,因为它可以降低消息丢失的风险。 – Adam

相关问题