
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
ws-server-ftw
Advanced tools
Mock websocket endpoints with ease
ws-server was developed in order to allow a developer to easily mock websocket apis in a few seconds. The idea is taken from json-server, a great package which lets you mock entire rest apis.
$ npm install ws-server-ftw --save-dev
ws-server lets you send through a socket connection data defined in a json or js file.
The mock server will serve the requested path traversing the json provided with the same path, i.e. the path /foo/bar
will serve (if db is the json object) db['foo']['bar']
A js file can be used instead of a json in order to perform operations or send random stuff, such js should export an object.
Data are sent when the connection occurs. Then the application continues listening for stdin inputs, so that it is possible to:
'merge <NEW_DATA>'
, where <NEW_DATA>
should be in a valid json format and hit Enter'deepmerge <NEW_DATA>'
, where <NEW_DATA>
should be in a valid json format and hit Enter'append <NEW_DATA>'
, where <NEW_DATA>
should be in a valid json format and hit EnterIncoming messages will be printed to the console.
$ ws-server -i mydb.json
Available options:
$ ws-server -h
usage: index.js [-h] [-v] [-p PORT] -i DB
ws-server cli
Optional arguments:
-h, --help Show this help message and exit.
-v, --version Show program's version number and exit.
-p PORT, --port PORT Websocket server port
-i DB, --input DB JSON or js input file which exports (es5) an object
Given the following db.json
:
{
"api": {
"v1": {
"ui": {
"modalIsOpen": true,
"sidebarStyle": "dark"
},
"users": [
{
"username": "admin",
"email": "admin@example.com",
"id": 1,
"role": "admin"
},
{
"username": "guest",
"email": "guest@example.com",
"id": 2,
"role": "guest"
}
]
}
}
}
A socket client connected to the path ws://localhost:9704/api/v1/
will receive this data:
{
"ui": {
"modalIsOpen": true,
"sidebarStyle": "dark"
},
"users": [
{
"username": "admin",
"email": "admin@example.com",
"id": 1,
"role": "admin"
},
{
"username": "guest",
"email": "guest@example.com",
"id": 2,
"role": "guest"
}
]
}
Now hit Enter to send the data again.
Entering merge {"ui": {"foo": "bar"}}
and pressing Enter the client will receive:
{
"ui": {
"foo": "bar"
},
"users": [
{
"username": "admin",
"email": "admin@example.com",
"id": 1,
"role": "admin"
},
{
"username": "guest",
"email": "guest@example.com",
"id": 2,
"role": "guest"
}
]
}
Entering deepmerge {"ui": {"foo": "bar"}}
and pressing Enter the client will receive:
{
"ui": {
"modalIsOpen": true,
"sidebarStyle": "dark",
"foo": "bar"
},
"users": [
{
"username": "admin",
"email": "admin@example.com",
"id": 1,
"role": "admin"
},
{
"username": "guest",
"email": "guest@example.com",
"id": 2,
"role": "guest"
}
]
}
Entering deepmerge {"users": [{"username": "foo"}]}
and pressing Enter, the client will receive:
{
"ui": {
"modalIsOpen": true,
"sidebarStyle": "dark"
},
"users": [
{
"username": "admin",
"email": "admin@example.com",
"id": 1,
"role": "admin"
},
{
"username": "guest",
"email": "guest@example.com",
"id": 2,
"role": "guest"
},
{
"username": "foo"
}
]
}
This project it's quite simple actually, I've developed it to match my needs during some UI implementations with react relying upon socket communication.
Pull request and new contributions will be much appreciated. Please just make sure to be compliant with the eslint configuration before submitting.
Also I preferred not to arm ES6 and ES7 features here, so let's keep the code ES2015 compatible, in order to avoid babel transpiling.
FAQs
Mock websocket endpoints with ease
The npm package ws-server-ftw receives a total of 161 weekly downloads. As such, ws-server-ftw popularity was classified as not popular.
We found that ws-server-ftw demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.