各位好,我现在有一个问题请教一下大家。
我网页上想实现一个类似MSN、QQ一样的实时聊天系统,要求支持一对一和一对多(群)的聊天功能,并且要能够支持较多人同时在线聊天。
我现在的想法是这样的:用户发送信息时,判断对方是否在线,如果对方在线则将信息缓存在内存中,如果不在线则将信息存入数据库供对方读取,接收信息时用AJAX异步每隔一段时间向服务器检索新的未读信息,第一次检索时先从数据库中检索是否有未读信息(在不在线时可能有其它用户发过来的信息),以后只检索内存中是否有新的信息,如果有则读取并将它删除。
不知道这种想法是否可行?会有什么样的问题?或是各位有更好的办法请不啬赐教。
我网页上想实现一个类似MSN、QQ一样的实时聊天系统,要求支持一对一和一对多(群)的聊天功能,并且要能够支持较多人同时在线聊天。
我现在的想法是这样的:用户发送信息时,判断对方是否在线,如果对方在线则将信息缓存在内存中,如果不在线则将信息存入数据库供对方读取,接收信息时用AJAX异步每隔一段时间向服务器检索新的未读信息,第一次检索时先从数据库中检索是否有未读信息(在不在线时可能有其它用户发过来的信息),以后只检索内存中是否有新的信息,如果有则读取并将它删除。
不知道这种想法是否可行?会有什么样的问题?或是各位有更好的办法请不啬赐教。
做的很粗糙,不知道有没有什么帮助。
WEB聊天 即时发送的话 服务器压力会比较大吧
QQ 是点对点协议!
web qq的原理是很简单的,但实现比较复杂,需要用到反向ajax,至少可以用三种方式实现。
duoduo6153 能不能请你讲一下 web qq的原理呢?相信这里有很多朋友都想知道,先谢谢了。
你有没有想过如果做缓存的话,那时间是多久呢?
时间久的话就失去了“实时聊天”的意义了。这也是聊天软件的特殊性。
访问数据库是不可避免的。应为它要的是即时数据。
我简述一下做法:
1.数据库结构:
表Message:
hostid 外键,接受人
postid 外键,发送人
message 消息内容
mdate 消息发送时间
mstate 消息状态(0为未读,1为已读)2.发送消息时,将消息存入数据库,mstate为0
例:a向b发送消息:“你好吗?”
insert into Message values(a的id,b的id,系统时间,0)3.做一个定时器,每隔1秒向数据库中查询hostid为当前用户且mstate为0的记录,将记录放入结果集,将数据库中mstate改为1.
-----------------------------