This is documentation for the next version of Grafana k6 documentation. For the latest stable release, go to the latest version.

Documentationbreadcrumb arrow Grafana k6breadcrumb arrow JavaScript APIbreadcrumb arrow k6/x/tcpbreadcrumb arrow Socketbreadcrumb arrow Socket.write( data, [options] )
Open source

Socket.write()

Asynchronously sends data to the remote server. Returns a Promise that resolves when the data has been written to the socket.

Signature

JavaScript
socket.write(data, options)

Parameters

ParameterTypeDescription
datastring | ArrayBufferData to send. Use ArrayBuffer for binary data
optionsobjectOptional write configuration
options.encodingstringEncoding for string data: utf8 / utf-8 (default), ascii, base64, base64url, hex. Ignored when data is an ArrayBuffer
options.tagsobjectCustom tags for this write operation’s metrics (key-value pairs)

Returns

TypeDescription
Promise<void>Resolves when the data has been written to the socket

Example

JavaScript
import { Socket } from "k6/x/tcp"

export default async function () {
  const socket = new Socket()
  const closed = new Promise((resolve) => { socket.on("close", resolve) })
  socket.on("error", (err) => { console.error("Error:", err) })

  await socket.connect(8080, "example.com")

  // Write a plain text string (utf8 by default)
  await socket.write("Hello, server!")

  // Write base64-encoded data
  await socket.write("SGVsbG8gV29ybGQ=", { encoding: "base64" })

  // Write with custom tags for metrics
  await socket.write("request payload", {
    tags: { operation: "auth-request" },
  })

  socket.destroy()
  await closed
}