I got the basic use-case "deploy an application" working tonight so I released a
new bus and agent with the feature so building hawkular/dist master branch should pull it
in. I'll talk to the UI folks Monday morning on what they need to do next. But, in
short, look at the DeployApplicationRequest JSON [1] - that's the JSON request. You
must stream the application file content (the war or ear or whatever) immediately
following the JSON text over the websocket as a single message.
My example .html [2] shows how I was able to stream data over the websocket to submit the
request, but I did it by having the client browser load the file in memory first - not
something I think we want to do in the product, but, this is how I got it to work:
=====
<html> ... <input type="file" id="file"
name="file"/> ... </html>
...
<script>
...
document.getElementById('file').addEventListener('change',
handleFileSelect, false);
var fileBinaryContent = null;
function handleFileSelect(evt) {
var theFile = evt.target.files[0];
var reader = new FileReader();
reader.onloadend = function(readEvent) {
if (readEvent.target.readyState == FileReader.DONE) {
fileBinaryContent = new Uint8Array(readEvent.target.result);
}
}
reader.readAsArrayBuffer(theFile);
}
...
// when you are ready to send, do the following
var text = "DeployApplicationRequest={...the json...}";
var binaryblob = new Blob([text, fileBinaryContent], {type:
'application/octet-stream'});
socket.send(binaryblob);
...
=====
That is all.
--John Mazz
[1]
https://github.com/hawkular/hawkular-bus/blob/master/hawkular-feed-comm/f...
[2]
https://github.com/hawkular/hawkular-bus/blob/master/hawkular-feed-comm/f...