websocket shell. started.
parent
97707129ae
commit
9a9aee2aa4
52
main.ts
52
main.ts
|
|
@ -1,35 +1,33 @@
|
|||
let Deno
|
||||
|
||||
import { serveDir } from "https://deno.land/std@0.194.0/http/file_server.ts";
|
||||
|
||||
Deno.serve((req: Request) => {
|
||||
const path = new URL(req.url)
|
||||
const pathname = path.pathname; // URL Pfad.
|
||||
const path = new URL(req.url)
|
||||
const pathname = path.pathname; // URL Pfad.
|
||||
|
||||
if (req.headers.get("upgrade") == "websocket") { // Websocket Handling.
|
||||
const { socket, response } = Deno.upgradeWebSocket(req);
|
||||
socket.addEventListener("open", () => {
|
||||
|
||||
});
|
||||
socket.addEventListener("close", () => {
|
||||
|
||||
});
|
||||
socket.addEventListener("message", (event) => {
|
||||
|
||||
if (req.headers.get("upgrade") == "websocket") { // Websocket Handling.
|
||||
const { socket, response } = Deno.upgradeWebSocket(req);
|
||||
socket.addEventListener("open", () => {
|
||||
console.log('OPEN')
|
||||
});
|
||||
socket.addEventListener("close", () => {
|
||||
|
||||
});
|
||||
return response;
|
||||
}
|
||||
});
|
||||
socket.addEventListener("message", (event) => {
|
||||
console.log('MSG')
|
||||
|
||||
// Static Handling (kein Websocket Request).
|
||||
if (pathname.startsWith("/")) {
|
||||
return serveDir(req, {
|
||||
fsRoot: "public",
|
||||
quiet: true
|
||||
});
|
||||
}
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
return new Response("404: Not Found", {
|
||||
status: 404,
|
||||
});
|
||||
// Static Handling (kein Websocket Request).
|
||||
if (pathname.startsWith("/")) {
|
||||
return serveDir(req, {
|
||||
fsRoot: "public",
|
||||
quiet: true
|
||||
});
|
||||
}
|
||||
|
||||
return new Response("404: Not Found", {
|
||||
status: 404,
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
test
|
||||
</body>
|
||||
<script type="module" src="main.js"></script>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
import { Connector } from "./scripts/connector.js";
|
||||
import { genID } from "./scripts/helpers.js";
|
||||
|
||||
// let thisID = localStorage.getItem('id')
|
||||
// if (thisID == null) {
|
||||
// thisID = genID()
|
||||
// localStorage.setItem('id', thisID)
|
||||
// }
|
||||
|
||||
let session = "uniqueSession1"
|
||||
|
||||
let connector = new Connector(undefined, session)
|
||||
|
||||
let mainObj = new connector.link();
|
||||
|
||||
mainObj.set({ 'frieden': 'Klaus' }) // oberste Ebene
|
||||
mainObj.onchange('frieden', (change) => { console.log(change) })
|
||||
|
||||
mainObj.set(new connector.link('transport')); // nested object
|
||||
mainObj.transport.set({ 'play': true })
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
let Connector = function (url) {
|
||||
|
||||
let socket;
|
||||
|
||||
this.link = function(name) {
|
||||
|
||||
let out = {}
|
||||
|
||||
|
||||
|
||||
|
||||
return out
|
||||
}
|
||||
|
||||
|
||||
|
||||
function connect(url) {
|
||||
try {
|
||||
url = url || location.href.replace('http', 'ws')
|
||||
socket = new WebSocket(url);
|
||||
socket.onopen = () => {
|
||||
console.log('OPEN')
|
||||
};
|
||||
socket.onmessage = (m) => {};
|
||||
socket.onclose = () => {
|
||||
console.log('CLOSING')
|
||||
// setTimeout(() => {
|
||||
// location.reload() // @todo for developement only
|
||||
// //connect(); // try reconnect
|
||||
// }, 1000);
|
||||
}
|
||||
socket.onerror = (e) => function(e) {console.log(e)}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
connect(url)
|
||||
|
||||
}
|
||||
|
||||
export { Connector }
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
/**
|
||||
* Helper
|
||||
*/
|
||||
function getNode(n, v) {
|
||||
n = document.createElementNS("http://www.w3.org/2000/svg", n);
|
||||
for (var p in v) {
|
||||
if (p == '_text') {
|
||||
n.innerHTML = v[p]
|
||||
} else {
|
||||
n.setAttributeNS(null, p, v[p]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return n
|
||||
}
|
||||
|
||||
function cE(str) {
|
||||
return document.createElement(str);
|
||||
}
|
||||
|
||||
function cENS(str) {
|
||||
return document.createElementNS("http://www.w3.org/2000/svg", str);
|
||||
}
|
||||
|
||||
function tN(str, par) {
|
||||
if (par) {
|
||||
par.appendChild(document.createTextNode(str));
|
||||
}
|
||||
return document.createTextNode(str);
|
||||
}
|
||||
|
||||
function genE(type, obj, par) {
|
||||
let e = cE(type);
|
||||
|
||||
for (let attr in obj) {
|
||||
if (attr == "_text") {
|
||||
e.appendChild(tN(obj[attr]));
|
||||
continue;
|
||||
}
|
||||
e.setAttribute(attr, obj[attr]);
|
||||
|
||||
}
|
||||
|
||||
if (par) {
|
||||
par.appendChild(e);
|
||||
}
|
||||
// e.textContent = ...
|
||||
return e;
|
||||
}
|
||||
|
||||
function genENS(type, obj, par) {
|
||||
let e = cENS(type);
|
||||
for (attr in obj) {
|
||||
if (attr == "_text") {
|
||||
e.appendChild(tN(obj[attr]));
|
||||
} else {
|
||||
e.setAttribute(attr, obj[attr]);
|
||||
}
|
||||
}
|
||||
|
||||
if (par) {
|
||||
par.appendChild(e);
|
||||
}
|
||||
// e.textContent = ...
|
||||
return e;
|
||||
}
|
||||
|
||||
function capFirst(string) {
|
||||
if (!string) return;
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
|
||||
function byId(str) {
|
||||
return document.getElementById(str)
|
||||
}
|
||||
|
||||
// Erzeugt einen vertikalen Abstand.
|
||||
let gap = function (parent, scale) {
|
||||
scale = scale || 1
|
||||
let newGap = genE('div', { style: 'padding-top: calc(var(--spacing) * ' + scale + ');' }, parent)
|
||||
return newGap
|
||||
}
|
||||
|
||||
let idStorage = []
|
||||
function genID() {
|
||||
let newId = Math.floor(Math.random() * 10000000).toString()
|
||||
while (idStorage.indexOf(newId) >= 0) return genID()
|
||||
idStorage.push(newId)
|
||||
return newId
|
||||
}
|
||||
|
||||
export { genE, tN, gap, genID }
|
||||
Loading…
Reference in New Issue