Skip to content

Instantly share code, notes, and snippets.

@chainhead
Created May 2, 2022 00:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chainhead/cb1d0ce8ce24e81a843b705f074551b6 to your computer and use it in GitHub Desktop.
Save chainhead/cb1d0ce8ce24e81a843b705f074551b6 to your computer and use it in GitHub Desktop.
Sample Websockets client

Introduction

This is a sample Websocket client to send random JSON payload to a Websockets server.

Installation

After cloning this gist, run the following commands.

npm init -y
npm i ws moment

Usage

Launch with the following command where wsUrl is a Websockets end-point (ws: or wss:) and frequency is rate of publication in milli-secods.

node index.js wsUrl frequency
const WebSocket = require('ws')
const mom = require('moment')
function getRandomValue(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
function getPayload() {
let payload = {}
let ts = mom().format('DD-MM-YYYYTHH:mm:ss.SSS')
let data = []
let alarms1 = []
let alarms2 = []
let alarms3 = []
let pData = ""
pData = getRandomValue(0, 200)
data.push({
paramName: "param1",
paramData: pData
})
pData = getRandomValue(0, 20)
data.push({
paramName: "param2",
paramData: pData
})
pData = getRandomValue(0, 5000)
data.push({
paramName: "param3",
paramData: pData
})
alarms1.push(
{paramName : "param4", paramState : "HIGH"}
)
alarms1.push(
{paramName : "param5", paramState : "LOW"}
)
alarms1.push(
{paramName : "param6", paramState : "MED"}
)
pData = getRandomValue(0, 5000),
alarms2.push(
{
paramName: "param7",
paramData: pData,
paramState: "HIGH"}
)
pData = getRandomValue(0, 20),
alarms2.push(
{
paramName: "param8",
paramData: pData,
paramState: "HIGH"}
)
pData = getRandomValue(0, 1000),
alarms2.push(
{
paramName: "param9",
paramData: pData,
paramState: "HIGH"}
)
pData = getRandomValue(0, 5000)
alarms3.push(
{paramName : "param10", paramData : pData}
)
pData = getRandomValue(0, 20)
alarms3.push(
{paramName : "param11", paramData : pData}
)
pData = getRandomValue(0, 1000)
alarms3.push(
{paramName : "param12", paramData : pData}
)
payload = {
ts: ts,
data: data,
alarms1: alarms1,
alarms2: alarms2,
alarms3: alarms3
}
return payload
}
function startClient(wsServer, frequency) {
const ws = new WebSocket(wsServer)
ws.on('open', function open() {
setInterval(function() {
ws.send(JSON.toString(getPayload()))
}, frequency)
})
}
if (process.argv.length < 4) {
console.log(`USAGE: node index.js wsServer frequency`)
process.exit(1)
}
startClient(process.argv[2], process.argv[3])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment