Usage
Initialization
Declare a variable wsMgr of type WSConnectionManager_typ, and configure. Also declare a variable wsStream of type WSStream_typ.
In the task Init function:
// Configure wsMgr
strcpy(wsMgr.in.cfg.localIPAddress, "127.0.0.1");
wsMgr.in.cfg.localPort = 8000;
strcpy(wsMgr.in.cfg.remoteIPAddress, "127.0.0.1");
wsMgr.in.cfg.remotePort = 8081;
wsMgr.in.cfg.mode = WS_MODE_SERVER;
wsMgr.in.cmd.enable = 1;
// Configure wsStream
wsStream.in.cfg.bufferSize = 1000; // Set once, and can not be changed after initialization
Operation
Each time a new client attempts to connect or the server allows a connection, wsMgr reports a new connection available. New connections must be passed to a WSStream_typ. wsStream will handle negotiating the upgrade to WebSocket.
WebSocket Manager
wsManageConnection(&wsMgr);
if(wsMgr.out.newConnectionAvailable) {
// Copy connection info to stream
memcpy(&wsStream.in.par.connection, &wsMgr.out.connection, sizeof(wsStream.in.par.connection));
wsMgr.in.cmd.acknowledgeConnection = 1;
// Configure stream and start receiving data
wsStream.in.cmd.receive = 1;
wsStream.in.par.pSendData = &sendBuffer;
wsStream.in.par.pReceiveData = &receiveBuffer;
wsStream.in.par.maxReceiveLength = sizeof(receiveBuffer);
wsStream.in.par.allowContinuousReceive = 1;
wsStream.in.par.allowContinuousSend = 1;
}
Once wsStream reports connected, messages can be received and sent from the application.
webSocket Stream
wsReceive(&wsStream);
if(wsStream.out.dataReceived){
// Echo received data back to client
strcpy(sendBuffer, receiveBuffer);
wsStream.in.par.sendLength = wsStream.out.receivedDataLength;
wsStream.in.cmd.send = 1;
}
wsSend(&wsStream);
// Reset commands
wsStream.in.cmd.send = 0;
wsStream.in.cmd.acknowledgeError = 0;
Advance
TCPComm to Websocket
Connections established with TCPComm can be then upgraded to a WebSocket connection.