Files
c-websocket-server/README.md

1.6 KiB

C Websocket Server

MIT License



Table of Contents

  • Introduction
  • Libraries
  • Data Structure

Introduction

This websocket server parses JSON data sent by the client in order to control the state of GPIO pins by writing them to a SQL database.

Libraries

argp is used for simplification of command line argument parsing.

libtap is used for unit testing, all tests can be found inside the /tests directory.

wsServer is used as socket server, writing a custom socket library was abundant for the course followed.

json-c is used to cast incoming JSON objects into data envelopes.

libmysqlclient is used for a connection to the SQL database.

Data Structure

A request from the client would look as follows:

{
  "auth": <authentication:str>
  "payload": {
    "sensorId": <sensor.id:str>
    "sensorData": <sensor.data:str>
  }
}

After the request has been parsed, it will be processed by a handler which will in turn give a status code / data struct. This can be one of:

enum RESPONSE_CODES {
  SUCCESS,
  MISSING_JSON,
  MISSING_PAYLOAD,
  MISSING_AUTH
};

[ { "sensorId": <sensor.id:str>, "state": <sensor.state:str> }, ... ]