osdevkid
osdevkid

Reputation: 147

websocket binary frame example

In Internet, I could not found any example for "websocket binary frame" communication using Javascript (as web client) and Java (as web server).

Can you anybody post few example for "websocket binary frame" communication ?

Upvotes: 1

Views: 12196

Answers (3)

kanaka
kanaka

Reputation: 73217

Jetty has supported binary frames in WebSockets since at least version 7.5.2. Here is a Jetty example that includes binary frames: https://www.eclipse.org/jetty/documentation/9.4.x/jetty-websocket-api-send-message.html

From the server point of view, there is very little difference between sending and receiving binary data, it's just a single opcode change. When sending text, you are limited to UTF-8 encoded data. With binary you don't have that limit.

From the browser point of view, if the browser supports binary data (which really only very recent builds of Chrome support) then sending binary data involves sending an arraybuffer or blob using the send() method on the WebSocket object. Receiving binary data happens automatically if the server sends a binary frame. However, you can select between receiving blobs or arraybuffers by setting the binaryType property on your WebSocket object instance.

Upvotes: 1

McAgee
McAgee

Reputation: 148

I just know how to unwrap the content sent from browser, here is my code:

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());
}

Found from here: http://songpengfei.iteye.com/blog/1178310

Link there is a zipped c source code, I change it to node. And now I'm study how to send data to the client.

Upvotes: 0

Robin Zimmermann
Robin Zimmermann

Reputation: 11

Kaazing WebSocket Gateway has had binary support for quite a while now. Moreover it also works in older browsers that don't support WebSocket natively. And there is support for clients other than JavaScript. So you can do binary over WebSocket using JavaScript, Flash/Flex, Silverlight, .Net, or Java. You can use any browser, the fallback emulation will work in older browsers.

The backend server can be Java or anything that listens on a TCP port.

Upvotes: 1

Related Questions