开头
邮件系统几乎是每个网络游戏都有的系统,以下用Erlang以例,分享一种邮件系统实现方式。
数据库表
tableName: user_mail
mail_id | title | content | from_user_id | to_user_id | item_list | is_read | send_time |
---|---|---|---|---|---|---|---|
123 | 我是标题 | 我是内容 | test1 | test2 | 物品列表 | Yes/No | 邮件发送时的时间戳 |
玩家上线时,执行
SELECT * FROM `user_mail` WHERE to_user_id = #{玩家的user_id} ORDER BY `send_time`
并将数据加载到内存中
实现
需要专门维护一个邮件列表mail_list,可存储在Redis或ETS等公共可访问的内存中。
当玩家或系统发送邮件时,将邮件内容添加到邮箱列表mail_list中。
定期对邮箱列表mail_list进行检查,列表不为空时,发送邮件。