On 8/19/06, andreas.alin / gmail.com <andreas.alin / gmail.com> wrote:
> Yow!
> I'm trying to make a script that will act as a server (server 1), and
> when a connection to the server server 1 is made, it will start a
> thread that will connect to another server (server 2), and it will keep
> the connection to server 2, even if the client disconnects.
>
> The thing is that, as I've tried, my client/server will not connect to
> another server, and if it does, the client can not disconnect.
>
> Any ideas?
>
> Thanks,
> Andreas
>
> ----------------------
>
> require 'socket'
>
> class Session < Thread
>   def initalize(session_id)
>     super
>     @session_id = session_id
>   end
>
>   def session_id
>     @session_id
>   end
>
>   def send_message( message
>     # This method should send a message to
>     # server 2
>     puts message
>   end
> end
>
> threads = []
>
> server = TCPServer.new("0.0.0.0", 12121)
>
> while (session = server.accept)
>   session_id, message = session.gets.split(";", 2)
>
>   t = threads.map {|t| t if t["session_id"] == session_id }.delete_if
> {|s| s == nil}.first
>   puts t
>   if t
>     puts "Found thread with existing session_id: #{ session_id }"
>     t.send :send_message, message
>   else
>     threads << Session.new(session) do |t|
>       Thread.current["session_id"] = session_id
>       puts "Creating thread for #{ session_id }"
>     end
>   end
>   session.close
> end
>
>
>


First, make sure your constructor is getting called. You spelled it
"initalize" instead of "initialize"