Skip to content
On this page

useWebSocket

The Websocket.

State

The useWebSocket function exposes the following reactive state:

typescript
import { useWebSocket } from '@elonehoo/pistachio'

const {
  supported,
  ws,
  messageEvent,
  errorEvent,
  data,
  isOpen,
  isClosed,
  errored
} = useWebSocket()
import { useWebSocket } from '@elonehoo/pistachio'

const {
  supported,
  ws,
  messageEvent,
  errorEvent,
  data,
  isOpen,
  isClosed,
  errored
} = useWebSocket()
StateTypeDescription
supportedbooleanIs supported
wsWebSocket|nullWebSocket instance, returns null if supported === false
messageEventRef<MessageEvent|null>Last message event received
errorEventRef<ErrorEvent>Error event
dataRef<any>Last data received
isOpenRef<boolean>Is websocket open
isClosedRef<boolean>Is websocket closed
erroredRef<boolean>Is websocket errored

Methods

The useWebSocket function exposes the following methods:

typescript
import { useWebSocket } from '@elonehoo/pistachio'

const { send, close } = useWebSocket()
import { useWebSocket } from '@elonehoo/pistachio'

const { send, close } = useWebSocket()
SignatureDescription
sendSends message through WebSocket
closeCloses WebSocket connection

Example

open: false

closed: false

data:

errored: false

vue
<script setup lang="ts">
import { useWebSocket } from '@elonehoo/pistachio'

const { isOpen, isClosed, data, errored, send, close } = useWebSocket('wss://javascript.info/article/websocket/demo/hello')
</script>

<template>
  <div>
    <button :disabled="!isOpen" @click="send">
      Send
    </button> &nbsp;
    <button :disabled="!isOpen" @click="close(1000)">
      Close
    </button>
    <p>open: {{ isOpen }}</p>
    <p>closed: {{ isClosed }}</p>
    <p>data: {{ data }}</p>
    <p>errored: {{ errored }}</p>
  </div>
</template>

<script setup lang="ts">
import { useWebSocket } from '@elonehoo/pistachio'

const { isOpen, isClosed, data, errored, send, close } = useWebSocket('wss://javascript.info/article/websocket/demo/hello')
</script>

<template>
  <div>
    <button :disabled="!isOpen" @click="send">
      Send
    </button> &nbsp;
    <button :disabled="!isOpen" @click="close(1000)">
      Close
    </button>
    <p>open: {{ isOpen }}</p>
    <p>closed: {{ isClosed }}</p>
    <p>data: {{ data }}</p>
    <p>errored: {{ errored }}</p>
  </div>
</template>

Released under the MIT License.