---
title: "WebSocket | Grafana k6 documentation"
description: "Create a WebSocket connection, and provides a WebSocket instance to interact with the service."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# WebSocket

Creates a WebSocket instance for connection to a remote host.

The following events can close the connection:

- remote host close event.
- [WebSocket.close()](/docs/k6/v2.3.x/javascript-api/k6-websockets/websocket/websocket-close/).
- k6 VU interruption based on test configuration or CLI commands.

Expand table

| Parameter | Type   | Description                                                                                                     |
|-----------|--------|-----------------------------------------------------------------------------------------------------------------|
| url       | string | The URL to which to connect (e.g. “ws://localhost:10000”).                                                      |
| protocols | array  | Not yet implemented, reserved for the future use.                                                               |
| params    | object | [Params](/docs/k6/v2.3.x/javascript-api/k6-websockets/params/) object containing additional request parameters. |

### Returns

Expand table

| Type      | Description                      |
|-----------|----------------------------------|
| WebSocket | An instance of WebSocket object. |

### Ready-state constants

Compare an instance’s `readyState` with these constants to check the connection state:

Expand table

| Constant               | Value | Description                                      |
|------------------------|-------|--------------------------------------------------|
| `WebSocket.CONNECTING` | `0`   | The connection is not yet open.                  |
| `WebSocket.OPEN`       | `1`   | The connection is open and ready to communicate. |
| `WebSocket.CLOSING`    | `2`   | The connection is closing.                       |
| `WebSocket.CLOSED`     | `3`   | The connection is closed or could not be opened. |

The constants are read-only and also available on each instance, for example, `ws.OPEN`.

### Example

*A k6 script that initiates a WebSocket connection.*

JavaScript ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```javascript
import { WebSocket } from 'k6/websockets';

export default function () {
  const ws = new WebSocket('wss://quickpizza.grafana.com/ws');

  ws.onopen = () => {
    console.log(ws.readyState === WebSocket.OPEN); // true
    console.log(ws.OPEN === WebSocket.OPEN); // true
    ws.close();
  };

  ws.onclose = () => {
    console.log(ws.readyState === WebSocket.CLOSED); // true
  };
}
```
