Я пытаюсь преобразовать сложный Java-апплет в JavaScript. Апплет совершает все виды магии при общении через TCP-сокет, который мне нужно будет эмулировать в JavaScript. Волшебство TCP само по себе довольно сложное, поэтому я бы предпочел сделать это позже и сначала заставить работать графическую часть апплета. Связь через сокет TCP сообщает апплету, что рисовать, поэтому в зависимости от данных в сокете апплет будет считывать / записывать разные значения.
Мой текущий план атаки:
- Передать заголовок запроса в JavaScript в качестве параметров (рабочий), а также необходимые данные из сокета в зависимости от типа запроса
- Разобрать параметры / данные заголовка, отправленные в JS, и соответственно создать объекты
- Возвращаемое значение для вызова функции Java с массивом байтов, которые должны быть записаны в сокет TCP
Я застрял в последней части. Если я верну массив байтов, как я могу преобразовать его в байт [] или аналогичный? Является ли значение, переданное обратно, правильным массивом Java или это какой-то хэш объекта?
Java:
void callJavaScript(Applet app) {
String[] params = {"blah", "cool"};
JSObject win = JSObject.getWindow(app);
Object ret = win.call("someFunction", params);
// what is ret?
}
JavaScript:
function someFunction (blah, cool) {
return [5, 7, 12, 2];
}
Примечание:
Сложный Java-апплет является многопоточным, поэтому просто вызвать некоторую функцию в апплете нетривиально.