2017-06-14 3 views
1

クライアントがサーバに接続または切断されたときに、サーバ側でどのように知ることができますか?ZeroCアイスコネクションイベント

ZeroC Iceは、これらのイベントに対していくつかのコールバック機能を提供していますか?

最小デモ:

サーバー側

try(com.zeroc.Ice.Communicator communicator = com.zeroc.Ice.Util.initialize(args)) 
    { 
     com.zeroc.Ice.ObjectAdapter adapter = 
      communicator.createObjectAdapterWithEndpoints("Hello", "default -h localhost -p 10000"); 
     adapter.add(new HelloI(), com.zeroc.Ice.Util.stringToIdentity("hello")); 
     adapter.activate(); 
     communicator.waitForShutdown(); 
    } 

クライアント側

try(com.zeroc.Ice.Communicator communicator = com.zeroc.Ice.Util.initialize(args)) 
    { 
     HelloPrx hello = HelloPrx.checkedCast(communicator.stringToProxy("hello:default -h localhost -p 10000")); 
     hello.sayHello(); 
    } 

答えて

0

サーバー側からは、current.conメンバーをチェックし、それがhasn接続の場合はクローズコールバックを登録することができます前に見たことがあるsetCloseCallback

電流は、(あなたが `current.con`言うとき、私は本当にそれを取得しないでください)あなたは

@Override 
public void sayHello(int delay, com.zeroc.Ice.Current current) 
{ 
    // Check if current.con is a new connection, you will 
    // need to keep track of that in your code. 

    // Install a close callback for the connection. 
    current.con.setCloseCallback(con -> 
     { 
      // Close callback 
     }); 
} 
+0

コード例を行うことができますsayHello実装では、たとえば、すべてのサーバントのメソッドに渡されるパラメータですcom.zeroc.Ice.Current?誰が「現在」ですか? – TGeorge