25
25
#include " WebSockets.h"
26
26
#include " WebSocketsServer.h"
27
27
28
- WebSocketsServer::WebSocketsServer (uint16_t port) {
28
+ WebSocketsServer::WebSocketsServer (uint16_t port, String origin, String protocol ) {
29
29
_port = port;
30
+ _origin = origin;
31
+ _protocol = protocol;
32
+
30
33
_server = new WEBSOCKETS_NETWORK_SERVER_CLASS (port);
31
34
32
35
_cbEvent = NULL ;
@@ -37,7 +40,12 @@ WebSocketsServer::~WebSocketsServer() {
37
40
// disconnect all clients
38
41
disconnect ();
39
42
43
+ #if (WEBSOCKETS_NETWORK_TYPE == NETWORK_ESP8266)
44
+ _server->close ();
45
+ #else
40
46
// TODO how to close server?
47
+ #endif
48
+
41
49
}
42
50
43
51
/* *
@@ -540,11 +548,21 @@ void WebSocketsServer::handleHeader(WSclient_t * client) {
540
548
" Sec-WebSocket-Version: 13\r\n "
541
549
" Sec-WebSocket-Accept: " );
542
550
client->tcp ->write (sKey .c_str (), sKey .length ());
543
- client->tcp ->write (" \r\n " );
551
+
552
+ if (_origin.length () > 0 ) {
553
+ String origin = " \r\n Access-Control-Allow-Origin: " ;
554
+ origin += _origin;
555
+ origin += " \r\n " ;
556
+ client->tcp ->write (origin.c_str (), origin.length ());
557
+ }
544
558
545
559
if (client->cProtocol .length () > 0 ) {
546
- // TODO add api to set Protocol of Server
547
- client->tcp ->write (" Sec-WebSocket-Protocol: arduino\r\n " );
560
+ String protocol = " \r\n Sec-WebSocket-Protocol: " ;
561
+ protocol += _protocol;
562
+ protocol += " \r\n " ;
563
+ client->tcp ->write (protocol.c_str (), protocol.length ());
564
+ } else {
565
+ client->tcp ->write (" \r\n " );
548
566
}
549
567
550
568
// header end
0 commit comments