Пример двоичного фрейма websocket - PullRequest
1 голос
/ 19 октября 2011

В Интернете я не смог найти ни одного примера для связи «двоичный фрейм websocket» с использованием Javascript (в качестве веб-клиента) и Java (в качестве веб-сервера).

Можете ли вы опубликовать несколько примеров для связи "бинарный фрейм websocket"?

Ответы [ 3 ]

2 голосов
/ 20 октября 2011

Jetty поддерживает двоичные фреймы в WebSockets начиная с версии 7.5.2.Вот пример Jetty, который включает в себя двоичные кадры: https://www.eclipse.org/jetty/documentation/9.4.x/jetty-websocket-api-send-message.html

С точки зрения сервера, разница между отправкой и получением двоичных данных очень мала, это всего лишь одно изменение кода операции.При отправке текста вы ограничены данными в кодировке UTF-8.С двоичным кодом у вас нет этого предела.

С точки зрения браузера, если браузер поддерживает двоичные данные (которые на самом деле поддерживают только самые последние сборки Chrome), то отправка двоичных данных включает отправку массива буферов или больших двоичных объектов.используя метод send() для объекта WebSocket.Получение двоичных данных происходит автоматически, если сервер отправляет двоичный кадр.Однако вы можете выбрать между приемом больших двоичных объектов или буферов массива, установив свойство binaryType в экземпляре объекта WebSocket.

1 голос
/ 18 ноября 2011

Kaazing WebSocket Gateway уже давно поддерживает бинарный код.Более того, он также работает в старых браузерах, которые изначально не поддерживают WebSocket.И есть поддержка клиентов, кроме JavaScript.Таким образом, вы можете создавать двоичные файлы через WebSocket, используя JavaScript, Flash / Flex, Silverlight, .Net или Java.Вы можете использовать любой браузер, запасная эмуляция будет работать в старых браузерах.

Внутренним сервером может быть Java или все, что слушает порт TCP.

0 голосов
/ 18 декабря 2011

Я просто знаю, как развернуть содержимое, отправленное из браузера, вот мой код:

socket.ondata = function(src,start,end) {
    src = src.slice(start,end);
    var maskKeys = [src[2],src[3],src[4],src[5]];
    var dest = new Array();
    for(var i=0;i<src.length-6;i++){
        var mKey = maskKeys[i%4];
        dest[i] = mKey ^ src[6+i];
    }
    console.log(new Buffer(dest).toString());
}

Найдено здесь: http://songpengfei.iteye.com/blog/1178310

Ссылка есть на исходный код в архиве c, я изменяю его на узел. А сейчас я учусь отправлять данные клиенту.

...