You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.0 KiB
99 lines
2.0 KiB
function startup()
|
|
{
|
|
var FileSystem = function(root) {
|
|
this.root = root;
|
|
};
|
|
|
|
FileSystem.BAD_NO_ENTRY = -1;
|
|
|
|
FileSystem.prototype.getEntry = function(path) {
|
|
var items = path.split('/');
|
|
var curItem = this.root;
|
|
var item;
|
|
var i, len;
|
|
|
|
for(i = 0, len = items.length; curItem && (i < len); i++) {
|
|
item = items[i];
|
|
if ("" !== item) {
|
|
curItem = curItem.entries && curItem.entries[item];
|
|
}
|
|
}
|
|
|
|
return curItem;
|
|
}
|
|
|
|
FileSystem.prototype.getattr = function(path) {
|
|
entry = this.getEntry(path);
|
|
if (entry) {
|
|
return {
|
|
mode: entry.mode || 0755,
|
|
type: entry.type || 'file',
|
|
size: entry.size || 0,
|
|
atime: entry.atime || 0,
|
|
mtime: entry.mtime || 0,
|
|
ctime: entry.ctime || 0
|
|
};
|
|
}
|
|
else {
|
|
return FileSystem.BAD_NO_ENTRY;
|
|
}
|
|
};
|
|
|
|
var fs = new FileSystem({
|
|
mode: 0755,
|
|
type: "dir",
|
|
entries: {
|
|
"hello": { mode: 0755, type: "file", size: 10, contents: "Hello, World!"}
|
|
}
|
|
});
|
|
|
|
var ws = new WebSocket('ws://localhost:4711/', 'fs');
|
|
ws.onopen = function() {
|
|
console.log('open');
|
|
};
|
|
ws.onclose = function() {
|
|
console.log('close');
|
|
};
|
|
ws.onmessage = function(message) {
|
|
console.log(message);
|
|
|
|
try {
|
|
var request = JSON.parse(message.data);
|
|
var result = -42;
|
|
var response;
|
|
|
|
if (("string" === typeof(request.method)) &&
|
|
("number" === typeof(request.id)) &&
|
|
(request.params)) {
|
|
switch(request.method)
|
|
{
|
|
case "getattr":
|
|
result = fs.getattr(request.params[0]);
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if ("number" !== typeof(result)) {
|
|
response = {result: result, id: request.id};
|
|
}
|
|
else {
|
|
response = {error: {code: result}, id: request.id};
|
|
}
|
|
console.log(response);
|
|
ws.send(JSON.stringify(response));
|
|
}
|
|
}
|
|
catch (ex) { console.log(ex); }
|
|
};
|
|
|
|
var sendButton = document.getElementById('sendButton');
|
|
sendButton.addEventListener('click', function() {
|
|
var content = document.getElementById('content').value;
|
|
ws.send(content);
|
|
console.log(content);
|
|
});
|
|
}
|
|
|
|
document.onload=startup();
|