2 つの TCP 接続を使用してベンダー API に接続しています。1 つの接続で、同期要求を行います。2 番目の接続は、API が応答をプッシュするために使用されます。
現在、ganymed-ssh-2ライブラリを使用して、サーバーとの 2 つの接続を確立しています。接続を確立するときにハンドシェイクを実行します。同期接続を確立すると、非同期チャネルでの認証に使用するトークンを受け取ります。現在、認証されたら、非同期チャネルで受信したすべてのメッセージを単純に出力しています。
同期チャネルでリクエストを作成し続け (現時点では単に標準入力を使用)、非同期チャネルからの応答を標準出力に出力し続けるには、どのような手順を実行する必要がありますか? アクターを使用する必要があるかどうか (入力ストリームから読み取り、それに応じてメッセージを解析できるアクターの例を見つけるのに苦労しました)、または使用すべき他の Scala 風の構造があるかどうかはわかりません。 .
class SyncConnection {
def connect(): String = {
// Establish connection
...
val out = new PrintStream(outputStream)
val in = new BufferedSource(inputStream).getLines()
// Make login request, receive token
out.println("loginRequest")
out.flush()
val token = in.next()
token
}
}
class AsyncConnection {
def connect(token: String) {
// Establish connection
...
val in = new BufferedSource(inputStream).getLines()
val out = new PrintStream(outputStream)
// Authenticate using token
out.println(token)
out.flush()
// Print all messages received on input stream
for (line <- in) println(line)
}
}