diff --git a/components/Nav.vue b/components/Nav.vue index 91607b6..2c244c7 100644 --- a/components/Nav.vue +++ b/components/Nav.vue @@ -69,6 +69,6 @@ const menu = ref(false); - + diff --git a/composables/messages.ts b/composables/messages.ts index 3f60d84..fbebd74 100644 --- a/composables/messages.ts +++ b/composables/messages.ts @@ -1,4 +1,5 @@ import { useWebSocket } from "@vueuse/core"; +import ReconnectingWebSocket from "reconnecting-websocket"; export const useMessages = () => { const messages = ref([]); const sendMessage = ref((_: any) => {}); @@ -6,16 +7,18 @@ export const useMessages = () => { onMounted(() => { const config = useRuntimeConfig(); - const { ws: websocket, send } = useWebSocket(config.public.wsUrl, { - autoReconnect: true, - }); - websocket.value.addEventListener("message", ({ data }) => { + // const { ws: websocket, send } = useWebSocket(config.public.wsUrl, { + // autoReconnect: true, + // }); + const websocket = new ReconnectingWebSocket("wss://data.elektron.art"); + + websocket.addEventListener("message", ({ data }) => { const message = JSON.parse(data); messages.value.push(message); }); ws.value = websocket; sendMessage.value = (message: any) => - send( + websocket.send( JSON.stringify({ id: randomString(), datetime: new Date().toISOString(), diff --git a/package-lock.json b/package-lock.json index b901ebe..99ed99c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,8 +5,6 @@ "packages": { "": { "dependencies": { - "@huntersofbook/plausible-nuxt": "^0.3.0", - "@huntersofbook/plausible-vue": "^0.3.0", "@iconify-json/ph": "^1.1.2", "@iconify-json/radix-icons": "^1.1.5", "@nuxtjs/strapi": "^1.5.1", @@ -26,6 +24,7 @@ "plausible-tracker": "^0.3.8", "prettier": "^2.7.1", "prettier-plugin-tailwindcss": "^0.1.13", + "reconnecting-websocket": "^4.4.0", "rss-parser": "^3.12.0", "unplugin-icons": "^0.14.9", "vite": "^3.1.1" @@ -588,83 +587,6 @@ "node": ">=12" } }, - "node_modules/@huntersofbook/plausible-nuxt": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@huntersofbook/plausible-nuxt/-/plausible-nuxt-0.3.0.tgz", - "integrity": "sha512-Aj0BIx6aptUi/iQv18aWyIMT5vLVzAVdBokFyNQ6qM6k66s0bLQQ8JkBkbojsyE9vW7HYhTWGCJ3fE3FHlrRWQ==", - "dependencies": { - "@huntersofbook/plausible-vue": "0.3.0", - "@nuxt/kit": "^3.0.0-rc.11", - "defu": "^6.1.0" - }, - "funding": { - "url": "https://github.com/sponsors/huntersofbook" - } - }, - "node_modules/@huntersofbook/plausible-nuxt/node_modules/@nuxt/kit": { - "version": "3.0.0-rc.11", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.0.0-rc.11.tgz", - "integrity": "sha512-o0E/k635Lzcxp4K5t0ToHC6WwQ1wyN0EIqMAQEzgiUexoAhzdURr21QI0D6e6U461u4KP7x92wYM87VxhMFXmQ==", - "dependencies": { - "@nuxt/schema": "3.0.0-rc.11", - "c12": "^0.2.13", - "consola": "^2.15.3", - "defu": "^6.1.0", - "globby": "^13.1.2", - "hash-sum": "^2.0.0", - "ignore": "^5.2.0", - "jiti": "^1.16.0", - "knitwork": "^0.1.2", - "lodash.template": "^4.5.0", - "mlly": "^0.5.16", - "pathe": "^0.3.8", - "pkg-types": "^0.3.5", - "scule": "^0.3.2", - "semver": "^7.3.7", - "unctx": "^2.0.2", - "unimport": "^0.6.7", - "untyped": "^0.5.0" - }, - "engines": { - "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@huntersofbook/plausible-nuxt/node_modules/@nuxt/schema": { - "version": "3.0.0-rc.11", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.0.0-rc.11.tgz", - "integrity": "sha512-EIBYQeBxJ+JZ8RjPRGaXM9+vtWMHQ4HsqZIw5a+p6hqRLGf53fHANT4vjMQZA4fAYBnJZJI7dB/OXkfyb/kikA==", - "dependencies": { - "c12": "^0.2.13", - "create-require": "^1.1.1", - "defu": "^6.1.0", - "jiti": "^1.16.0", - "pathe": "^0.3.8", - "pkg-types": "^0.3.5", - "postcss-import-resolver": "^2.0.0", - "scule": "^0.3.2", - "std-env": "^3.2.1", - "ufo": "^0.8.5", - "unimport": "^0.6.7" - }, - "engines": { - "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@huntersofbook/plausible-vue": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@huntersofbook/plausible-vue/-/plausible-vue-0.3.0.tgz", - "integrity": "sha512-dTz8Bd2yD2zngnVWfL+4drxgxT/RU4GUYxD9NKEO3QZVq2nvT7LRjjd0jvEE/ux/ZkBBiV9gzfoEtNiX4BDx1A==", - "dependencies": { - "defu": "^6.1.0", - "plausible-tracker": "^0.3.8" - }, - "funding": { - "url": "https://github.com/sponsors/huntersofbook" - }, - "peerDependencies": { - "vue": "^3.2.39" - } - }, "node_modules/@iconify-json/ph": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@iconify-json/ph/-/ph-1.1.2.tgz", @@ -7829,6 +7751,11 @@ "node": ">=8.10.0" } }, + "node_modules/reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, "node_modules/redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", @@ -10281,70 +10208,6 @@ "integrity": "sha512-IKznSJOsVUuyt7cDzzSZyqBEcZe+7WlBqTVXiF1OXP/4Nm387ToaXZ0fyLwI1iBlI/bzpxVq411QE2/Bt2XWWw==", "optional": true }, - "@huntersofbook/plausible-nuxt": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@huntersofbook/plausible-nuxt/-/plausible-nuxt-0.3.0.tgz", - "integrity": "sha512-Aj0BIx6aptUi/iQv18aWyIMT5vLVzAVdBokFyNQ6qM6k66s0bLQQ8JkBkbojsyE9vW7HYhTWGCJ3fE3FHlrRWQ==", - "requires": { - "@huntersofbook/plausible-vue": "0.3.0", - "@nuxt/kit": "^3.0.0-rc.11", - "defu": "^6.1.0" - }, - "dependencies": { - "@nuxt/kit": { - "version": "3.0.0-rc.11", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.0.0-rc.11.tgz", - "integrity": "sha512-o0E/k635Lzcxp4K5t0ToHC6WwQ1wyN0EIqMAQEzgiUexoAhzdURr21QI0D6e6U461u4KP7x92wYM87VxhMFXmQ==", - "requires": { - "@nuxt/schema": "3.0.0-rc.11", - "c12": "^0.2.13", - "consola": "^2.15.3", - "defu": "^6.1.0", - "globby": "^13.1.2", - "hash-sum": "^2.0.0", - "ignore": "^5.2.0", - "jiti": "^1.16.0", - "knitwork": "^0.1.2", - "lodash.template": "^4.5.0", - "mlly": "^0.5.16", - "pathe": "^0.3.8", - "pkg-types": "^0.3.5", - "scule": "^0.3.2", - "semver": "^7.3.7", - "unctx": "^2.0.2", - "unimport": "^0.6.7", - "untyped": "^0.5.0" - } - }, - "@nuxt/schema": { - "version": "3.0.0-rc.11", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.0.0-rc.11.tgz", - "integrity": "sha512-EIBYQeBxJ+JZ8RjPRGaXM9+vtWMHQ4HsqZIw5a+p6hqRLGf53fHANT4vjMQZA4fAYBnJZJI7dB/OXkfyb/kikA==", - "requires": { - "c12": "^0.2.13", - "create-require": "^1.1.1", - "defu": "^6.1.0", - "jiti": "^1.16.0", - "pathe": "^0.3.8", - "pkg-types": "^0.3.5", - "postcss-import-resolver": "^2.0.0", - "scule": "^0.3.2", - "std-env": "^3.2.1", - "ufo": "^0.8.5", - "unimport": "^0.6.7" - } - } - } - }, - "@huntersofbook/plausible-vue": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@huntersofbook/plausible-vue/-/plausible-vue-0.3.0.tgz", - "integrity": "sha512-dTz8Bd2yD2zngnVWfL+4drxgxT/RU4GUYxD9NKEO3QZVq2nvT7LRjjd0jvEE/ux/ZkBBiV9gzfoEtNiX4BDx1A==", - "requires": { - "defu": "^6.1.0", - "plausible-tracker": "^0.3.8" - } - }, "@iconify-json/ph": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@iconify-json/ph/-/ph-1.1.2.tgz", @@ -15548,6 +15411,11 @@ "picomatch": "^2.2.1" } }, + "reconnecting-websocket": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/reconnecting-websocket/-/reconnecting-websocket-4.4.0.tgz", + "integrity": "sha512-D2E33ceRPga0NvTDhJmphEgJ7FUYF0v4lr1ki0csq06OdlxKfugGzN0dSkxM/NfqCxYELK4KcaTOUOjTV6Dcng==" + }, "redis-errors": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", diff --git a/package.json b/package.json index b7966b7..efcd434 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "plausible-tracker": "^0.3.8", "prettier": "^2.7.1", "prettier-plugin-tailwindcss": "^0.1.13", + "reconnecting-websocket": "^4.4.0", "rss-parser": "^3.12.0", "unplugin-icons": "^0.14.9", "vite": "^3.1.1" diff --git a/pages/lab/chat2.vue b/pages/lab/chat2.vue new file mode 100644 index 0000000..bb38e6b --- /dev/null +++ b/pages/lab/chat2.vue @@ -0,0 +1,15 @@ + + +