我目前正在尝试使用 Scala 向 ApolloMQ 代理发送 CONNECT Stomp 帧。我正在执行以下操作:
val socketChannel: SocketChannel = SocketChannel.open
val socketAddress: SocketAddress = new InetSocketAddress("localhost", 61613)
val frame = "CONNECT\naccept-version:1.0,1.1,1.2\nhost:localhost\n" +
"login:username\npasscode:password\n\n\0".toCharArray
val byteArray = frame.map { c => c.asInstanceOf[Byte] }
val bb = ByteBuffer.allocate(128)
bb.put(byteArray)
如果我然后尝试连接并写入
socketChannel.connect(socketAddress)
socketChannel.write(bb)
它似乎在写,但没有返回任何内容,并且连接立即断开。如果我倒带第ByteBuffer
一个
bb.rewind
socketChannel.connect(socketAddress)
socketChannel.write(bb)
看起来连接正在命中 Apollo,但抛出了以下内容
java.net.ProtocolException: The maximum command length was exceeded
我四处搜索,但找不到任何关于为什么会发生这种情况的信息。