ruby 1.9.3 の PTY および io/console モジュールを使用して、telnet または ssh 経由で nCurses アプリケーションを実行する EventMachine サーバーを作成しようとしています。
require 'rubygems'
require 'socket'
require 'pty'
require 'io/console'
require 'eventmachine'
module CursesServer
def post_init
puts "-- someone connected to the server!"
@reader, @writer, @pid = PTY.spawn('ruby ./ncurses_app_to_run.rb')
@reader.sync = true #No buffering stdout
end
def receive_data(data)
screen = @reader.read(<number_of_bytes>)
puts "received: " + data # Log input on server side
send_data screen
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the server!"
end
end
# Note that this will block current thread.
EventMachine.run {
EventMachine.start_server "127.0.0.1", 8081, CursesServer
}
@reader.read に渡された引数の値をいじると、画面の一部をクライアント側に表示することができますが、クライアントの端末の実際のサイズを初期またはクライアントが端末のサイズを変更した後。
出力をクライアントの端末のサイズと同期するにはどうすればよいですか? telnet/netcat で可能ですか、それとも ssh のようなより堅牢なプロトコルを使用する必要がありますか?
前もって感謝します。