This commit is contained in:
2026-02-22 18:35:59 +03:00
parent fd54fa75bd
commit 25750fee51
21 changed files with 400 additions and 222 deletions

View File

@@ -44,10 +44,7 @@ export enum COMMAND {
export function useSharedWebSocket(options?: { url?: string; autoConnect?: true }) {
const url = options?.url || 'ws://localhost:3000/ws'
const autoConnect = options?.autoConnect ?? true
console.log('useSharedWebSocket', url, autoConnect)
const autoConnect = options?.autoConnect ?? false
const messages = ref<Message[]>([])
const chats = ref<Chat[]>([])
const users = ref<unknown[]>([])
@@ -55,9 +52,11 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
const error = ref<string>()
const worker = ref<SharedWorker>()
const initWorker = () => {
const init = () => {
console.log('INIT WORKER')
if (!window.SharedWorker) {
console.warn('SharedWorker not supported')
console.log('SharedWorker not supported')
error.value = 'SharedWorker not supported'
}
@@ -68,13 +67,10 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
worker.value.port.onmessage = (event) => {
const { type, data, connected, message } = event.data
console.log(event.data)
switch (type) {
case WsDataType.USER:
console.log('USER')
break
case WsDataType.CHATS:
console.log('chat')
chats.value = data
break
case WsDataType.MESSAGES:
@@ -91,16 +87,25 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
break
case WsDataType.ERROR:
error.value = message
logout()
break
}
}
worker.value.port.postMessage({
command: COMMAND.CONNECT,
data: { url },
data: { url: url, token: getToken() },
})
}
function logout() {
return localStorage.removeItem('token')
}
function getToken() {
return localStorage.getItem('token')
}
const send = (data: WsData) => {
if (worker.value) {
worker.value.port.postMessage({
@@ -117,7 +122,7 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
}
onMounted(() => {
if (autoConnect) initWorker()
if (autoConnect) init()
})
onUnmounted(() => {
@@ -131,6 +136,6 @@ export function useSharedWebSocket(options?: { url?: string; autoConnect?: true
error,
send,
close,
initWorker,
init,
}
}