上一篇文章完成了验证消息的接收,这篇文章本打算做好友间互发消息,但是做的时候发现会话列表的存储还没做。就是会话列表中有会话的情况下,关闭了软件,然后再次登录后,应该要复现会话列表。因此本篇文章将实现会话列表的存储及复现逻辑。至于删除会话操作,先不做,等项目大体上全部完成,后期优化的时候再做。
首先,我们需要在所有能够产生新会话的地方进行存储。目前只有两处,一个是首次接收验证消息的时候产生的验证消息会话,一个是接收到了验证消息“同意”的反馈之后产生的用户会话。由于要做的事情是一样的,因此,我们写了一个用于存储会话列表的方法,和存储验证消息列表类似:
public void saveTalkPanelToFile(TalkMessage tm)
{//需要保存的是什么?
StreamWriter sw = new StreamWriter(talkFilePath, true);
sw.WriteLine(tm.Account + Common.splitFlag + tm.NickName+ Common.splitFlag+ tm.SubMessage + Common.splitFlag+ tm.Time);
sw.Flush();
sw.Close();
}
takFilePath是一个字段:
private string talkFilePath = "talk.db";
我们只需要在那两处地方调用即可。贴出关键代码:
if (text.Length == 3&&text[0] == "" && text[1] == "同"&& text[2]=="意")
{//说明是验证消息的反馈
//加载和对方的会话
TalkMessage tm = new TalkMessage();
tm.Account = msgarr[0];
tm.SubMessage = "你已和"+tm.Account+"成为好友";
//geiNickName是之前写好的函数
tm.NickName = getNickName(tm.Account);
//之前写好的loadtalk方法
//获取返回值的目的是为了后面判断该会话是否存在
Panel talkpanel = loadtalk(0,tm);