mirror of
https://github.com/Links2004/arduinoWebSockets.git
synced 2025-07-16 08:42:06 +02:00
add events for ping / pong rx #382
This commit is contained in:
@ -45,6 +45,14 @@ void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) {
|
|||||||
// send data to server
|
// send data to server
|
||||||
// webSocket.sendBIN(payload, length);
|
// webSocket.sendBIN(payload, length);
|
||||||
break;
|
break;
|
||||||
|
case WStype_PING:
|
||||||
|
// pong will be send automatically
|
||||||
|
USE_SERIAL.printf("[WSc] get ping\n");
|
||||||
|
break;
|
||||||
|
case WStype_PONG:
|
||||||
|
// answer to a ping we send
|
||||||
|
USE_SERIAL.printf("[WSc] get pong\n");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -435,10 +435,12 @@ void WebSockets::handleWebsocketPayloadCb(WSclient_t * client, bool ok, uint8_t
|
|||||||
// send pong back
|
// send pong back
|
||||||
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char*)payload : "");
|
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] ping received (%s)\n", client->num, payload ? (const char*)payload : "");
|
||||||
sendFrame(client, WSop_pong, payload, header->payloadLen);
|
sendFrame(client, WSop_pong, payload, header->payloadLen);
|
||||||
|
messageReceived(client, header->opCode, payload, header->payloadLen, header->fin);
|
||||||
break;
|
break;
|
||||||
case WSop_pong:
|
case WSop_pong:
|
||||||
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char*)payload : "");
|
DEBUG_WEBSOCKETS("[WS][%d][handleWebsocket] get pong (%s)\n", client->num, payload ? (const char*)payload : "");
|
||||||
client->pongReceived = true;
|
client->pongReceived = true;
|
||||||
|
messageReceived(client, header->opCode, payload, header->payloadLen, header->fin);
|
||||||
break;
|
break;
|
||||||
case WSop_close: {
|
case WSop_close: {
|
||||||
#ifndef NODEBUG_WEBSOCKETS
|
#ifndef NODEBUG_WEBSOCKETS
|
||||||
@ -667,7 +669,7 @@ void WebSockets::enableHeartbeat(WSclient_t * client, uint32_t pingInterval, uin
|
|||||||
client->pingInterval = pingInterval;
|
client->pingInterval = pingInterval;
|
||||||
client->pongTimeout = pongTimeout;
|
client->pongTimeout = pongTimeout;
|
||||||
client->disconnectTimeoutCount = disconnectTimeoutCount;
|
client->disconnectTimeoutCount = disconnectTimeoutCount;
|
||||||
|
client->pongReceived = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -693,7 +695,5 @@ void WebSockets::handleHBTimeout(WSclient_t * client){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -197,6 +197,8 @@ typedef enum {
|
|||||||
WStype_FRAGMENT_BIN_START,
|
WStype_FRAGMENT_BIN_START,
|
||||||
WStype_FRAGMENT,
|
WStype_FRAGMENT,
|
||||||
WStype_FRAGMENT_FIN,
|
WStype_FRAGMENT_FIN,
|
||||||
|
WStype_PING,
|
||||||
|
WStype_PONG,
|
||||||
} WStype_t;
|
} WStype_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -371,9 +371,13 @@ void WebSocketsClient::messageReceived(WSclient_t * client, WSopcode_t opcode, u
|
|||||||
case WSop_continuation:
|
case WSop_continuation:
|
||||||
type = fin ? WStype_FRAGMENT_FIN : WStype_FRAGMENT;
|
type = fin ? WStype_FRAGMENT_FIN : WStype_FRAGMENT;
|
||||||
break;
|
break;
|
||||||
case WSop_close:
|
|
||||||
case WSop_ping:
|
case WSop_ping:
|
||||||
|
type = WStype_PING;
|
||||||
|
break;
|
||||||
case WSop_pong:
|
case WSop_pong:
|
||||||
|
type = WStype_PONG;
|
||||||
|
break;
|
||||||
|
case WSop_close:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -518,9 +518,13 @@ void WebSocketsServer::messageReceived(WSclient_t * client, WSopcode_t opcode, u
|
|||||||
case WSop_continuation:
|
case WSop_continuation:
|
||||||
type = fin ? WStype_FRAGMENT_FIN : WStype_FRAGMENT;
|
type = fin ? WStype_FRAGMENT_FIN : WStype_FRAGMENT;
|
||||||
break;
|
break;
|
||||||
case WSop_close:
|
|
||||||
case WSop_ping:
|
case WSop_ping:
|
||||||
|
type = WStype_PING;
|
||||||
|
break;
|
||||||
case WSop_pong:
|
case WSop_pong:
|
||||||
|
type = WStype_PONG;
|
||||||
|
break;
|
||||||
|
case WSop_close:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user