3 Replies Latest reply on Aug 13, 2007 2:07 AM by ron_sigal

    bisocket usage as a tunneling connection

    erezharari

      would bisocket do for a tunneling connection?
      say i have a client machine i want to connect to from my server.
      the client machine is behind the firewall and the server is on the internet.

      so i want the client machine to connect to my server and the connection to be kept open (tunneling) with keep alive pulses.

      from now on (once connected) i want the server to be able to call the client in a request - response manner, as if the client is a 'server'.

      i also want the connection/connections to support a pool of connections, so i can have multiple concurrent requests.

      i also want the connection to use https or ssl on tcp/ip.

      and my Q is: is bisocket the tool for me? and if it is - how?

        • 1. Re: bisocket usage as a tunneling connection
          ron_sigal

          The answer is "yes".

          so i want the client machine to connect to my server and the connection to be kept open (tunneling) with keep alive pulses.


          With the bisocket transport you don't need to worry about a keep-alive problem. You can configure the socket timeout value to be zero, so the sockets will stay open indefinitely. In fact, you don't even need to rely on setting the timeout value to zero. The client will create new sockets as needed.

          from now on (once connected) i want the server to be able to call the client in a request - response manner, as if the client is a 'server'.


          Remoting has a callback mechanism which allows the server to send invocations to the client in an asynchronous manner. See Section "5.6. Callbacks" in the Remoting Guide (http://labs.jboss.com/jbossremoting/docs/guide/index.html).

          i also want the connection/connections to support a pool of connections, so i can have multiple concurrent requests.


          The socket transport, from which bisocket is derived, maintains a connection pool on the client side and a worker thread pool on the server side. The same is true, in reverse, with respect to callbacks going from the server to the client.

          i also want the connection to use https or ssl on tcp/ip.


          There is an sslbisocket version of bisocket.

          is bisocket the tool for me?


          Yes, I believe it could be.

          if it is - how?


          Ah, well, I'd say take a look at the Remoting Guide and the sample code in the distribution.

          • 2. Re: bisocket usage as a tunneling connection
            erezharari

            10x,
            you mentioned:

            Remoting has a callback mechanism which allows the server to send invocations to the client in an asynchronous manner


            can the server call the client synchronously?

            and also, can HTTP[s] be used with bisocket?

            • 3. Re: bisocket usage as a tunneling connection
              ron_sigal

               

              can the server call the client synchronously?


              Ah, yes, well, by "asynchronous" I meant that the server can send callbacks independently of any invocations from the client, whenever it wants. "Asynchronous" could also mean that that after sending the callback the server does not wait for a response from the client. In fact, there are many variations on the sending of callbacks, including a handleCallback() method which, in "push" mode, waits until it gets a response from the client, and a handleCallbackOneway() method, which does not wait. So you could call handleCallbackOneway() asynchronous. For more on this subject see Section "5.6. Callbacks" of the Remoting Guide. Also, there is a mechanism for requesting an acknowledgement that a callback has been received by the client.

              can HTTP[s] be used with bisocket?


              Remoting has HTTP and HTTPS transports, but these are completely separate from bisocket and sslbisocket.