add echo and broadcast server as ws sub-commands
This commit is contained in:
		
							
								
								
									
										9
									
								
								examples/broadcast_server/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								examples/broadcast_server/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| CMakeCache.txt | ||||
| package-lock.json | ||||
| CMakeFiles		 | ||||
| ixwebsocket_unittest	 | ||||
| cmake_install.cmake	 | ||||
| node_modules | ||||
| ixwebsocket | ||||
| Makefile | ||||
| build | ||||
| @@ -1,28 +0,0 @@ | ||||
| # | ||||
| # Author: Benjamin Sergeant | ||||
| # Copyright (c) 2018 Machine Zone, Inc. All rights reserved. | ||||
| # | ||||
|  | ||||
| cmake_minimum_required (VERSION 3.4.1) | ||||
| project (broadcast_server) | ||||
|  | ||||
| # There's -Weverything too for clang | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshorten-64-to-32") | ||||
|  | ||||
| set (OPENSSL_PREFIX /usr/local/opt/openssl) # Homebrew openssl | ||||
|  | ||||
| set (CMAKE_CXX_STANDARD 14) | ||||
|  | ||||
| option(USE_TLS "Add TLS support" ON) | ||||
|  | ||||
| include_directories(broadcast_server .) | ||||
|  | ||||
| add_executable(broadcast_server  | ||||
|   broadcast_server.cpp) | ||||
|  | ||||
| if (APPLE AND USE_TLS) | ||||
|     target_link_libraries(broadcast_server "-framework foundation" "-framework security") | ||||
| endif() | ||||
|  | ||||
| target_link_libraries(broadcast_server ixwebsocket) | ||||
| install(TARGETS broadcast_server DESTINATION bin) | ||||
| @@ -1,75 +0,0 @@ | ||||
| /* | ||||
|  *  broadcast_server.cpp | ||||
|  *  Author: Benjamin Sergeant | ||||
|  *  Copyright (c) 2018 Machine Zone, Inc. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| #include <iostream> | ||||
| #include <sstream> | ||||
| #include <ixwebsocket/IXWebSocketServer.h> | ||||
|  | ||||
| int main(int argc, char** argv) | ||||
| { | ||||
|     int port = 8080; | ||||
|     if (argc == 2) | ||||
|     { | ||||
|         std::stringstream ss; | ||||
|         ss << argv[1]; | ||||
|         ss >> port; | ||||
|     } | ||||
|  | ||||
|     ix::WebSocketServer server(port); | ||||
|  | ||||
|     server.setOnConnectionCallback( | ||||
|         [&server](std::shared_ptr<ix::WebSocket> webSocket) | ||||
|         { | ||||
|             webSocket->setOnMessageCallback( | ||||
|                 [webSocket, &server](ix::WebSocketMessageType messageType, | ||||
|                    const std::string& str, | ||||
|                    size_t wireSize, | ||||
|                    const ix::WebSocketErrorInfo& error, | ||||
|                    const ix::WebSocketOpenInfo& openInfo, | ||||
|                    const ix::WebSocketCloseInfo& closeInfo) | ||||
|                 { | ||||
|                     if (messageType == ix::WebSocket_MessageType_Open) | ||||
|                     { | ||||
|                         std::cerr << "New connection" << std::endl; | ||||
|                         std::cerr << "Uri: " << openInfo.uri << std::endl; | ||||
|                         std::cerr << "Headers:" << std::endl; | ||||
|                         for (auto it : openInfo.headers) | ||||
|                         { | ||||
|                             std::cerr << it.first << ": " << it.second << std::endl; | ||||
|                         } | ||||
|                     } | ||||
|                     else if (messageType == ix::WebSocket_MessageType_Close) | ||||
|                     { | ||||
|                         std::cerr << "Closed connection" << std::endl; | ||||
|                     } | ||||
|                     else if (messageType == ix::WebSocket_MessageType_Message) | ||||
|                     { | ||||
|                         std::cerr << "Received " << wireSize << " bytes" << std::endl; | ||||
|                         for (auto&& client : server.getClients()) | ||||
|                         { | ||||
|                             if (client != webSocket) | ||||
|                             { | ||||
|                                 client->send(str); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             ); | ||||
|         } | ||||
|     ); | ||||
|  | ||||
|     auto res = server.listen(); | ||||
|     if (!res.first) | ||||
|     { | ||||
|         std::cerr << res.second << std::endl; | ||||
|         return 1; | ||||
|     } | ||||
|  | ||||
|     server.start(); | ||||
|     server.wait(); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
| @@ -1,28 +0,0 @@ | ||||
| # | ||||
| # Author: Benjamin Sergeant | ||||
| # Copyright (c) 2018 Machine Zone, Inc. All rights reserved. | ||||
| # | ||||
|  | ||||
| cmake_minimum_required (VERSION 3.4.1) | ||||
| project (echo_server) | ||||
|  | ||||
| # There's -Weverything too for clang | ||||
| set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wshorten-64-to-32") | ||||
|  | ||||
| set (OPENSSL_PREFIX /usr/local/opt/openssl) # Homebrew openssl | ||||
|  | ||||
| set (CMAKE_CXX_STANDARD 14) | ||||
|  | ||||
| option(USE_TLS "Add TLS support" ON) | ||||
|  | ||||
| include_directories(echo_server .) | ||||
|  | ||||
| add_executable(echo_server  | ||||
|   echo_server.cpp) | ||||
|  | ||||
| if (APPLE AND USE_TLS) | ||||
|     target_link_libraries(echo_server "-framework foundation" "-framework security") | ||||
| endif() | ||||
|  | ||||
| target_link_libraries(echo_server ixwebsocket) | ||||
| install(TARGETS echo_server DESTINATION bin) | ||||
| @@ -1,68 +0,0 @@ | ||||
| /* | ||||
|  *  echo_server.cpp | ||||
|  *  Author: Benjamin Sergeant | ||||
|  *  Copyright (c) 2018 Machine Zone, Inc. All rights reserved. | ||||
|  */ | ||||
|  | ||||
| #include <iostream> | ||||
| #include <sstream> | ||||
| #include <ixwebsocket/IXWebSocketServer.h> | ||||
|  | ||||
| int main(int argc, char** argv) | ||||
| { | ||||
|     int port = 8080; | ||||
|     if (argc == 2) | ||||
|     { | ||||
|         std::stringstream ss; | ||||
|         ss << argv[1]; | ||||
|         ss >> port; | ||||
|     } | ||||
|  | ||||
|     ix::WebSocketServer server(port); | ||||
|  | ||||
|     server.setOnConnectionCallback( | ||||
|         [&server](std::shared_ptr<ix::WebSocket> webSocket) | ||||
|         { | ||||
|             webSocket->setOnMessageCallback( | ||||
|                 [webSocket, &server](ix::WebSocketMessageType messageType, | ||||
|                    const std::string& str, | ||||
|                    size_t wireSize, | ||||
|                    const ix::WebSocketErrorInfo& error, | ||||
|                    const ix::WebSocketOpenInfo& openInfo, | ||||
|                    const ix::WebSocketCloseInfo& closeInfo) | ||||
|                 { | ||||
|                     if (messageType == ix::WebSocket_MessageType_Open) | ||||
|                     { | ||||
|                         std::cerr << "New connection" << std::endl; | ||||
|                         std::cerr << "Uri: " << openInfo.uri << std::endl; | ||||
|                         std::cerr << "Headers:" << std::endl; | ||||
|                         for (auto it : openInfo.headers) | ||||
|                         { | ||||
|                             std::cerr << it.first << ": " << it.second << std::endl; | ||||
|                         } | ||||
|                     } | ||||
|                     else if (messageType == ix::WebSocket_MessageType_Close) | ||||
|                     { | ||||
|                         std::cerr << "Closed connection" << std::endl; | ||||
|                     } | ||||
|                     else if (messageType == ix::WebSocket_MessageType_Message) | ||||
|                     { | ||||
|                         webSocket->send(str); | ||||
|                     } | ||||
|                 } | ||||
|             ); | ||||
|         } | ||||
|     ); | ||||
|  | ||||
|     auto res = server.listen(); | ||||
|     if (!res.first) | ||||
|     { | ||||
|         std::cerr << res.second << std::endl; | ||||
|         return 1; | ||||
|     } | ||||
|  | ||||
|     server.start(); | ||||
|     server.wait(); | ||||
|  | ||||
|     return 0; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user