WebSocket Communication: связь между JavaScript и классом Java

Мое требование как ниже

Шаг 1

  1. Установить связь WebSocket -> Готово.
  2. Отправить данные с клиента на сервер -> Готово
  3. Получение данных с сервера на клиент -> Готово

Шаг 2

  1. Установить связь WebSocket -> Готово
  2. Отправлять строковые данные с клиента [jsp/javascript] на сервер
  3. Строка -> ArrayBuffer на JavaScript -> Готово
  4. Получить данные о классе Java @ServerEndpoint в Bytebuffer -> Готово
  5. Как отправить обратно те же данные в браузер ->??
  6. Как преобразовать данные в строку ->??

Класс Java

 @ServerEndpoint("/testwebsocket")
 public class WebSocketTest {

@OnMessage
public void onMessage(ByteBuffer bytedata, Session session) throws IOException, InterruptedException {

    //session.getBasicRemote().sendText("replay from server for :" + bytedata);

    System.out.println("echoBinary: " + bytedata);
    String v = new String(bytedata.array(), "UTF-8");
    for (byte b : bytedata.array()) {
        System.out.print(b);
    }
    session.getBasicRemote().sendBinary(bytedata);
}

Javascript код для получения

function onMessage(event) {


if (event.data instanceof ArrayBuffer){

    alert("onMessage if ");
    var strReceived = String.fromCharCode.apply(null, new Uint16Array(event.data));
    document.getElementById('messages').innerHTML += '<br />' + 'receieved' + event;
}
else
{
    alert("onMessage else ");
    document.getElementById('messages').innerHTML += '<br />' + event.data;
}   }

Javascript код для отправки

//sending arraybuffer
function bytedata() {

//alert('I am in bytedata');
var str = document.getElementById('bytedataTextFeild').value;
var arrayByte = str2ab(str);
websocket.send(arrayByte);
return false;
}

//creating arraybuffer from string
function str2ab(str) {
//alert('I am in str2ab ' + str);  
var buf = new ArrayBuffer(str.length * 2); // 2 bytes for each char
var bufView = new Uint16Array(buf);
for (var i = 0, strLen = str.length; i < strLen; i++) {
    bufView[i] = str.charCodeAt(i);
    document.getElementById('messages').innerHTML += '<br />'
            + str.charCodeAt(i);
}
return buf;

}

в браузере

Текстовое поле jsp прошло -> Привет

Отправленные данные

72 101 108 108 111

Данные получены

[объект Blob] -> Я хочу это как "Привет"

0 ответов

Другие вопросы по тегам