This module is only compatible with Nuxt v2 at the moment.
- Add
@deepsource/nuxt-websocketdependency to your project.
yarn add @deepsource/nuxt-websocket # or npm install @deepsource/nuxt-websocket- Add
@deepsource/nuxt-websocketto themodulessection ofnuxt.config.js.
{modules: ['@deepsource/nuxt-websocket',],websocket: {// module options}}Add the types to your types array in tsconfig.json after the @nuxt/types (Nuxt 2.9.0+) entry.
{
"compilerOptions": {
"types": ["@nuxt/types", "@deepsource/nuxt-websocket"]
}
}You can pass different options using the websocket property in your nuxt.config.js.
// nuxt.config.jsexportdefault{websocket: {url: 'wss://echo.websocket.events/'reconnectInterval: 1000}};| Parameter | Default | Description |
|---|---|---|
url | - | WebSocket URL to connect |
reconnectInterval | 1000 | The time interval after which a reconnection attempt takes place for a close event. It should be less than 3s. |
You can also provide the URL via runtime config. It always takes precedence over the URL provided via options.
// nuxt.config.jsexportdefault{// Via Runtime configpublicRuntimeConfig: {websocket: {url: process.env.WEBSOCKET_URL}}};The following two plugins are injected into the Vue instance and are accessible across the app:-
$socket- Vue instance.$socketManager- WebSocketManager instance.
It's a Vue instance that's used as an event bus.
mounted(){this.$socket.$on('socket',(data)=>{console.log(`got ${data} from WebSocket`);});}beforeDestroy(){this.$socket.$off('socket');}Please refer to the official documentation for the supported instance methods/events.
The WebSocketManager instance has access to the following methods:-
Establishes WebSocket connection. It defines handlers for message, close and error events.
this.$socketManager.connect();Invoked by the WebSocketManager class constructor function.
Returns a promise that resolves straightaway if the WebSocket connection is open. Or else, waits until the open event is fired.
awaitthis.$socketManager.ready();Invoked by the send method.
Waits for the WebSocket connection to be open if not already and transmits the data received.
awaitthis.$socketManager.send({event: "socket",data: "Hello world"});Closes the WebSocket connection, optionally using code as the the WebSocket connection close code and reason as the the WebSocket connection close reason.
this.$socketManager.close();The message event handler expects data received from the server as either a string or an object of the shape
{ event: string, data: string }.
// Data received of the type string.// Emits an event by the name `message`.this.$socket.$on("message",()=>{});// Data received as an object.// Emits an event based on the value for the 'event' key.// { event: "socket", data: "Hello world" }this.$socket.$on("socket",()=>{});The close event handler attempts reconnection for a close event that is not normal (connection close code other than 1000).
- Clone this repository.
- Install dependencies using
yarn install. - Start development server using
yarn dev.