json-socket-server
Standalone Websocket Server for json-file based data storage.
Use for fake api, testing and mocking applications.
Table of contents
- Install and run
- Connect with Websocket
- Connect and Read data from a collection
- Create a new document
- Update a document
- Delete a document
- Notify from the server
Install and run
Install JSON Server
npm install -g json-socket-server
Create a db.json
file with some data
{
"users": [
{ "id": 1, "name": "Joel", "age": 23 }
]
}
Start JSON Server
json-socket-server db.json
Now the server is running on ws://localhost:8080
Connect with Websocket
This server only handles the Websocket connections!
Client side:
// Connect to the server.
const socketUrl = "ws://localhost:8080";
let exampleSocket = new WebSocket(socketUrl);
// Listen connection events.
exampleSocket.onopen = (ev) => {
console.log('Socket opened: ', ev);
};
exampleSocket.onmessage = (m) => {
let message = JSON.parse(m.data);
console.log('Message: ', message);
};
exampleSocket.onclose = (ev) => {
console.log('Socket closed: ', ev);
};
The full native .js example is in the examples/vanilla-js.html file.
Connect and Read data from a collection
If you connect to a collection, the server will notify you when it is changed.
Client side JAVASCRIPT code:
exampleSocket.send(JSON.stringify({type: 'read', path: 'users'}));
When collection data will changes on the server, you will get a message from it
in the onopen
event.
Get one document by id
exampleSocket.send(JSON.stringify({type: 'read', path: 'users', id: 1}));
You will get a message with the selected document.
Create a new document
The code below will create a new user on the server,
then the server will save it into the .json file.
exampleSocket.send(
JSON.stringify(
{
type: 'create',
path: 'users',
data: {
name: 'Paco Rabanne',
email: 'paco@example.com'
}
}
)
);
If you are connected with the specified path,
the server will notify you from updates.
Update a document
The code below will update an existing document by id.
exampleSocket.send(
JSON.stringify(
{
type: 'update',
path: 'users',
id: 5,
data: {
id: 5,
name: 'Josh',
age: 20
}
}
)
);
If you are connected with the specified path,
the server will notify you from updates.
Delete a document
The code below will delete a document by id.
exampleSocket.send(JSON.stringify({type: 'delete', path: 'users', id: 9}));
If you are connected with the specified path,
the server will notify you from updates.
Notify from the server
When you send a create|update|delete message to the server,
the server notifies all client for the changes, if they are connected for
the updated collection. The below example shows a typical update message.
{
type: "update",
path: "users",
data: [
{
id: 2,
name: "Paco Rabanne",
}
]
}
Don't forget to connect the collection.