swimtracker-firmware/websocket_protocol_draft.md

1.1 KiB

Web Socket Protocol Draft

Requirements:

  • fast when necessary (not even msgpack overhead)
    • sending live data updates
  • easy otherwise, based on msgpack
    • sending existing measured data

Message Format

  • 1byte "opcode" (if lower than threshold, probably 8, pure binary msg, otherwise msgpack)
  • msgpack data, or custom binary data

class WebsocketConnection
{
  sendMessage(opcode, optionalData); // optional data is packed via msgpck
  registerMessageReceive(func, singleShot);
  
  request(opcode, data, onReplyFunc); // with futures, async
      // register a single shot receive that calls the "onReplyFunc", or promise
  
};


class WebsocketInterface 
{
public:
  virtual bool onMessageReceived(websockets::WebsocketsClient &client)
  {

  }

protected:
  WebsocketServer * server_;
}

class SessionWebsocketInterface
{
public:

}


class WebsocketServer
{
  void sendToAll(char * data, size_t size);

  void registerInterface(WebsocketInterface *);
};

can this be done with static polymorphism as well? does std::tuple and std::apply work?! -> test