昨天上午上完课,下午开始做聊天模块。
查阅了很多资料,如果要把聊天模块做的很好很好,那可能还是需要很多技术。但是,还是为了使项目进展,我尽量把事情弄简单一点。下面总结下聊天模块的做法。
【聊天模块】
用一个表保存所有聊天的信息。包括用户id和名称,聊天内容和时间等等。
输入框让用户输入信息,ajax提交把信息添加到数据库里。
聊天页面使用ajax,每隔一定时间扫描一下数据库,把后面新增的所有信息输出来。这里就要记录好时间了。
为了不使ajax频繁扫描,我设定时间为1秒,但是数据库里的聊天表时间是datetime。后来把它改为了varchar,记录时间戳,因为秒数没办法精确地记录发送信息的时间,有时候会导致一些更新的错误。
jquery中new Date()获得当前时间,new Date().valueOf()获得当前时间戳。但是貌似jquery没有提供从时间戳转为日期的函数,所以后来回显信息的时间时,我是先在php中转化为日期再通过ajax传过来的。
还有thinkphp中结合jquery和ajax的getJSON方法,参数url一直搞不好。因为jquery中无法解析thinkphp中的常量。所以把网址信息保存在html中,再传到jquery中。
这样以后聊天模块就基本做好了。但是郁闷的是传到SAE上老是出错。找了很久终于找到错误的地方。就是在本来的表中添加了一个新的字段,在本地可以显示该字段,但是到了网上老是显示不出来。把表重新传、删了runtime都不起作用,那个郁闷!还不知道是什么原因造成的,现在正在求助中……
------------
求助结果,我重新建了第二个版本,然后把第一个版本的所有东西copy过去,然后提交,就OK了。
但还不知道是什么原因。