@@ -61,10 +61,10 @@ void WebSockets::clientDisconnect(WSclient_t * client, uint16_t code, char * rea
61
61
* @param payload uint8_t *
62
62
* @param length size_t
63
63
*/
64
- void WebSockets::sendFrame (WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool mask) {
64
+ void WebSockets::sendFrame (WSclient_t * client, WSopcode_t opcode, uint8_t * payload, size_t length, bool mask, bool fin ) {
65
65
66
66
DEBUG_WEBSOCKETS (" [WS][%d][sendFrame] ------- send massage frame -------\n " , client->num );
67
- DEBUG_WEBSOCKETS (" [WS][%d][sendFrame] opCode: %u mask: %u length: %u\n " , client->num , opcode, mask, length);
67
+ DEBUG_WEBSOCKETS (" [WS][%d][sendFrame] fin: %u opCode: %u mask: %u length: %u\n " , client->num , fin , opcode, mask, length);
68
68
69
69
if (opcode == WSop_text) {
70
70
DEBUG_WEBSOCKETS (" [WS][%d][sendFrame] text: %s\n " , client->num , payload);
@@ -80,25 +80,30 @@ void WebSockets::sendFrame(WSclient_t * client, WSopcode_t opcode, uint8_t * pay
80
80
uint8_t i = 0 ;
81
81
82
82
// create header
83
- buffer[i] = bit (7 ); // set Fin
84
- buffer[i++] |= opcode; // set opcode
85
83
84
+ // byte 0
86
85
buffer[i] = 0x00 ;
86
+ if (fin) {
87
+ buffer[i] |= bit (7 ); // /< set Fin
88
+ }
89
+ buffer[i++] |= opcode; // /< set opcode
87
90
91
+ // byte 1
92
+ buffer[i] = 0x00 ;
88
93
if (mask) {
89
- buffer[i] |= bit (7 ); // set mask
94
+ buffer[i] |= bit (7 ); // /< set mask
90
95
}
91
96
92
97
if (length < 126 ) {
93
98
buffer[i++] |= length;
94
99
95
100
} else if (length < 0xFFFF ) {
96
- buffer[i++] = 126 ;
101
+ buffer[i++] | = 126 ;
97
102
buffer[i++] = ((length >> 8 ) & 0xFF );
98
103
buffer[i++] = (length & 0xFF );
99
104
} else {
100
105
// normaly we never get here (to less memory)
101
- buffer[i++] = 127 ;
106
+ buffer[i++] | = 127 ;
102
107
buffer[i++] = 0x00 ;
103
108
buffer[i++] = 0x00 ;
104
109
buffer[i++] = 0x00 ;
0 commit comments