blob: f94d2b6e4cc54f80620b8398fa87756262766c04 [file] [log] [blame]
<?xml version = "1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<meta charset="UTF-8">
<head>
<title>NDN Put via WebSocket</title>
<script type="text/javascript" src="../Helper.js"></script>
<script type="text/javascript">
var ndn = new NDN();
ndn.connectWebSocket();
var AsyncPutClosure = function AsyncPutClosure() {
// Inherit from Closure.
Closure.call(this);
};
AsyncPutClosure.prototype.upcall = function(kind, upcallInfo) {
if (kind == Closure.UPCALL_FINAL) {
// Do nothing.
} else if (kind == Closure.UPCALL_INTEREST) {
// Extract the Name from the Interest. var name = upcallInfo.Interest.name;Íž
// Check that we want to respond to upcallInfo.interest. If yes, construct a ContentObject
// response, put it to the NDN and return Closure.RESULT_INTEREST_CONSUMED. Else fall
// through to return Content.RESULT_OK.
// See linemaker.py for more details.
console.log('AsyncPutClosure.upcall() called.');
var content = document.getElementById('content').value;
var interest = upcallInfo.interest;
nameStr = escape(interest.name.getName());
var si = new SignedInfo();
si.setFields();
var answer = DataUtils.toNumbersFromString(content);
var co = new ContentObject(new Name(nameStr), si, answer, new Signature());
co.sign();
var hex = encodeToHexContentObject(co);
var bytearray = new Uint8Array(hex.length / 2);
for (var i = 0; i < hex.length; i = i + 2) {
bytearray[i / 2] = '0x' + hex.substr(i, 2);
}
upcallInfo.ndn.ws.send(bytearray.buffer);
console.log('ws.send() finised.');
return Closure.RESULT_INTEREST_CONSUMED;
}
return Closure.RESULT_OK;
};
function run() {
var contentName = document.getElementById('contentname').value;
result = ndn.registerPrefixWS(contentName, new AsyncPutClosure(), null);
document.getElementById('result').innerHTML = 'Content name \'' + contentName
+'\' published. Result: ' + result;
}
</script>
</head>
<body >
<form>
<div>
<p>Please Enter a Content Name:</p>
<input id="contentname" type="text" name="CONTENTNAME" value="/wentao.shang/regtest001" />
<p>Please Enter the Content:</p>
<textarea id="content" cols="40" rows="5" name="CONTENT" >This works!</textarea>
<br />
</div>
</form>
<div>
<button onclick="run()">Publish Content</button>
</div>
<p id="result"></p>
</body>
</html>