To flydragon
这个好实现!我做社区做过。建张表,叫消息表,每个用户登进去,做次检查就是了。
浏览器客户端的失时通讯不知道怎么实现?c/s的client端可以用时间间隔控制事件来实现失时
检查事件,而浏览器怎么做?能实现吗?不要那个refresh content=10,在Chinaren上的消息
<a href="http://message.chinaren.com/read.php3"><img src="http://message.chinaren.com/checkmsg.php3" width=60 height=12 border=0></a>
也不能做到实时检查,只有每次登陆或刷新才能检测新消息。
这个好实现!我做社区做过。建张表,叫消息表,每个用户登进去,做次检查就是了。
浏览器客户端的失时通讯不知道怎么实现?c/s的client端可以用时间间隔控制事件来实现失时
检查事件,而浏览器怎么做?能实现吗?不要那个refresh content=10,在Chinaren上的消息
<a href="http://message.chinaren.com/read.php3"><img src="http://message.chinaren.com/checkmsg.php3" width=60 height=12 border=0></a>
也不能做到实时检查,只有每次登陆或刷新才能检测新消息。
你上过www.the9.com吗?那上面的消息就是实时弹出的,不论你在它的那张页面上。
还有一个你可以看看www.playease.com中的千里传音也是有消息马上弹出
还有个问题:关于session失效的问题,鉴于http的无状态,在用户不正常退出的时候怎么从在线名单中删除此用户,做在线统计的时候,统计相对准确的在线人数,你做过社区,这个你应该是妹什么问题吧
发消息给客户端时,用socket连上,发送就是了。
session失效,看你怎么具体做。原理是超时,如果一个家伙15分钟不动,
就认为他是掉线了。
你可以写一个msgreceiver.php,然后每页都require("msgreceiver.php");当一个客户发消息时,服务器帮他转发给另外的客户;
如果希望直接通过tcp/ip在两个客户端直接通讯,通过web应该做不到。除非你要求用户降低
客户端的浏览器的安全设置。
首先谢谢你的积极帮助,但是我还是不知怎么实现.要是你实现过的话能将代码email给我吗?我的add:[email protected],非常感谢100点,怎么样?要是没有的话,能说得再详细点吗?
import java.net.*;
....
ServerSocket server:=new ServerSocket(...参数不太记得了..);
Socket s=null;
while (true)
{
s=server.accept();//阻塞等待连接请求;
processIt(s); //处理请求
}在processIt方法里面执行一个接受消息和弹出窗口的操作;
这是客户端的基本原理;服务器端
首先,用户登录时记录他的IP地址;
其次,一个用户发消息给另外一个用户时,取出目标用户的ip地址,然后创建socket连接,
把消息传过去;当然也要保存在数据库里面。
上述办法不能对付有防火强或者ip转换的情况;如果要能对方,客户端就不是启动监听,而是
和服务器建立socket连接:
import java.net.*;
import java.io.*;
.....
Socket s=new Socket(...参数还是忘记了);//和服务器建立连接;
InputStream = s.getInputStream();//类似php了
后面就是读这个stream了,好久不用java不大记得了;不过这样做要小心,因为每个客户要和服务器有一个持续连接的。也许有更好的办法。大家一块想想巴。
现在用得很少
我只好用了一种很笨,很耗资源的方式
定时刷新
哎]
没办法