@@ -346,14 +346,14 @@ bool WebSocketsServer::newClient(WEBSOCKETS_NETWORK_CLASS * TCPclient) {
346
346
347
347
#if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
348
348
client->isSSL = false ;
349
- client->tcp ->setNoDelay (true );
349
+ client->tcp ->setNoDelay (true );
350
350
#endif
351
- #if (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC)
351
+ #if (WEBSOCKETS_NETWORK_TYPE != NETWORK_ESP8266_ASYNC) && ((WEBSOCKETS_NETWORK_TYPE != NETWORK_PARTICLE))
352
352
// set Timeout for readBytesUntil and readStringUntil
353
353
client->tcp ->setTimeout (WEBSOCKETS_TCP_TIMEOUT);
354
354
#endif
355
355
client->status = WSC_HEADER;
356
- #if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC)
356
+ #if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266) || (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266_ASYNC || WEBSOCKETS_NETWORK_TYPE == NETWORK_PARTICLE )
357
357
IPAddress ip = client->tcp ->remoteIP ();
358
358
DEBUG_WEBSOCKETS (" [WS-Server][%d] new client from %d.%d.%d.%d\n " , client->num , ip[0 ], ip[1 ], ip[2 ], ip[3 ]);
359
359
#else
@@ -679,32 +679,37 @@ void WebSocketsServer::handleHeader(WSclient_t * client, String * headerLine) {
679
679
680
680
client->status = WSC_CONNECTED;
681
681
682
- client->tcp ->write (" HTTP/1.1 101 Switching Protocols\r\n "
682
+ String response;
683
+ response.reserve (256 );
684
+
685
+ const char * prefix = " HTTP/1.1 101 Switching Protocols\r\n "
683
686
" Server: arduino-WebSocketsServer\r\n "
684
- " Upgrade: websocket\r\n "
685
687
" Connection: Upgrade\r\n "
686
688
" Sec-WebSocket-Version: 13\r\n "
687
- " Sec-WebSocket-Accept: " );
688
- client->tcp ->write ((const uint8_t *)sKey .c_str (), sKey .length ());
689
+ " Sec-WebSocket-Accept: " ;
690
+ response += prefix;
691
+ response += sKey ;
692
+ response += " \r\n " ;
689
693
690
694
if (_origin.length () > 0 ) {
691
- String origin = " \r\n Access-Control-Allow-Origin: " ;
692
- origin += _origin;
693
- origin += " \r\n " ;
694
- client->tcp ->write ((const uint8_t *)origin.c_str (), origin.length ());
695
+ response += " Access-Control-Allow-Origin: " ;
696
+ response += _origin;
697
+ response += " \r\n " ;
695
698
}
696
699
697
700
if (client->cProtocol .length () > 0 ) {
698
- String protocol = " \r\n Sec-WebSocket-Protocol: " ;
699
- protocol += _protocol;
700
- protocol += " \r\n " ;
701
- client->tcp ->write ((const uint8_t *)protocol.c_str (), protocol.length ());
702
- } else {
703
- client->tcp ->write (" \r\n " );
701
+ response += " Sec-WebSocket-Protocol: " ;
702
+ response += _protocol;
703
+ response += " \r\n " ;
704
704
}
705
705
706
+ response += " Upgrade: websocket\r\n " ;
707
+
708
+
706
709
// header end
707
- client->tcp ->write (" \r\n " );
710
+ response += (" \r\n " );
711
+
712
+ client->tcp ->write ((const uint8_t *)response.c_str (), response.length ());
708
713
709
714
headerDone (client);
710
715
0 commit comments