Code: Select all
MyTitle
Code: Select all
// SignalRStore.ts
import { defineStore } from 'pinia'
// eslint-disable-next-line @typescript-eslint/no-explicit-any
declare const $: any
export const useSignalRStore = defineStore('SignalRStore', {
state: () => {
return {
isConnected: false,
}
},
actions: {
async setConnected(value: boolean) {
this.isConnected = value
},
async startSignalR() {
const signalRConnection = $.hubConnection({ ** backend url **})
signalRConnection.reconnecting(() => {
this.isConnected = false
console.log('SignalR Reconnecting...')
})
signalRConnection.reconnected(() => {
this.isConnected = true
console.log('SignalR Reconnected')
})
signalRConnection.disconnected(() => {
console.log('SignalR Disconnect: ' + $.hubConnection.lastError)
this.isConnected = false
})
signalRConnection.stateChanged((state: object) => {
console.log('state changed: ' + JSON.stringify(state))
this.isConnected = false
})
signalRConnection
.start({ withCredentials: false })
.done(() => {
this.isConnected = true
console.log('Now connected, connection ID=')
})
.fail(() => {
this.isConnected = false
console.log('Could not connect')
})
},
},
})
Code: Select all
// App.vue
import { onBeforeMount } from 'vue'
import { RouterView } from 'vue-router'
import { useSignalRStore } from './stores/SignalRStore'
const signalRStore = useSignalRStore()
signalRStore.startSignalR()