我正在尝试实现一个简单的聊天应用程序,它通过中央服务器与其他客户端连接客户端,以便他们可以交换消息和文件。我还需要实现一个通知框架。例如,如果用户签名成功,或者他的好友登录,他会收到通知。 现在在RMI世界中,这是如何实现的? 我想有一个远程对象“连接类”,客户端从中调用方法,如“登录”,“断开连接”等... 至于通知框架类,它们也必须是远程的吗?或者他们可以躺在服务器上? 谢谢
答案 0 :(得分:1)
远程系统之间的事件消息传递有点棘手。这是必须发生的事情:
客户端必须注册对服务器端触发的事件的兴趣。要注册,客户端必须远程可用于事件源对象。
为了能够注册,客户端必须找到服务器开头,因此服务器对象必须远程可供客户端使用。
该服务器以及客户端必须是远程对象。
让所有客户端实现远程接口。
RemoteClientIfc extends Remote {
void inform();
}
//have a remote method register() on the *Server* object which accepts RemoteClientIfc.
//c'd be something like this...
register(RemoteClientIfc client){
arrayListofClients.add(client);
}
//So client will do a look up on the remote server object and register itself.
remoteObj.register(clientInstance);
//In the remote server you
//can probably have another method to send notifications to the client.
//Run through the ArrayList and call
//inform() on each of them.
//Thus the client will receive notification.
tellClients(){
Iterator i = ....
while (i.hasNext()){
((RemoteClientIfc).i.next()).inform();
}
}