WeberknechtJavaライブラリを介してWebSocketに接続しようとしています。Javaクライアントが接続を作成しようとすると、次のエラーメッセージが表示されます。
W/System.err(805): java.lang.ArrayIndexOutOfBoundsException: length=1000; index=1000
W/System.err(805): at ...WebSocketConnection.connect(WebSocketConnection.java:86)
問題の原因となる部分は次のとおりです。
public void connect() throws WebSocketException {
try {
if (connected) {
throw new WebSocketException("already connected");
}
socket = createSocket();
input = new DataInputStream(socket.getInputStream());
output = new PrintStream(socket.getOutputStream());
output.write(handshake.getHandshake());
boolean handshakeComplete = false;
int len = 10000;
byte[] buffer = new byte[len];
int pos = 0;
ArrayList<String> handshakeLines = new ArrayList<String>();
while (!handshakeComplete) {
int b = input.read();
buffer[pos] = (byte) b; // THIS LINE CAUSES THE EXCEPTION
pos += 1;
if (buffer[pos - 1] == 0x0A && buffer[pos - 2] == 0x0D) {
String line = new String(buffer, "UTF-8");
if (line.trim().equals("")) {
handshakeComplete = true;
} else {
handshakeLines.add(line.trim());
}
buffer = new byte[len];
pos = 0;
}
}
この問題の原因は何ですか?このクライアントライブラリは、サーバーが使用するWebSocketバージョンに準拠していない可能性がありますか?
Weberknechtの向こうの問題はまだ解決されていません。この質問は非常に一般的な問題(WebSocketヘッダーとハンドシェイクデータの読み取り)のように思われるため、ここで質問したいと思います。