From 11489de7a1cc0867f211510256bae51d05bb96aa Mon Sep 17 00:00:00 2001 From: Ravidu Lashan Date: Thu, 10 Oct 2019 13:08:46 +0530 Subject: [PATCH] Fixed issue in node client closing the connection (#16) * Fixed timeout issue of client * Fixed issue in node client * Removed unused files --- src/main.cpp | 1 - src/sock/socket_client.cpp | 6 +++--- src/sock/socket_client.hpp | 3 ++- src/sock/socket_server.cpp | 7 ++++--- src/sock/socket_session.cpp | 4 ++-- src/sock/socket_session.hpp | 4 ++-- 6 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 354921e8..4a185211 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -104,7 +104,6 @@ int main(int argc, char **argv) } } } - cout << "exited normally\n"; return 0; } diff --git a/src/sock/socket_client.cpp b/src/sock/socket_client.cpp index 33cacf30..3a0cd51a 100644 --- a/src/sock/socket_client.cpp +++ b/src/sock/socket_client.cpp @@ -8,7 +8,7 @@ namespace sock { socket_client::socket_client(net::io_context &ioc, socket_session_handler &session_handler) - : resolver_(net::make_strand(ioc)), ws_(net::make_strand(ioc)), socket_(ioc), sess_handler_(session_handler) + : resolver_(net::make_strand(ioc)), ws_(net::make_strand(ioc)), sess_handler_(session_handler) { } @@ -16,7 +16,7 @@ void socket_client::run(char const *host, char const *port) { host_ = host; port_ = (unsigned short)std::strtoul(port, NULL, 0); - + // Look up the domain name resolver_.async_resolve( host, @@ -63,7 +63,7 @@ void socket_client::on_connect(error ec, tcp::resolver::results_type::endpoint_t void socket_client::on_handshake(error ec) { std::make_shared( - std::move(socket_), sess_handler_) + ws_, sess_handler_) ->client_run(port_, host_, ec); } diff --git a/src/sock/socket_client.hpp b/src/sock/socket_client.hpp index f5b9c830..0cf180a4 100644 --- a/src/sock/socket_client.hpp +++ b/src/sock/socket_client.hpp @@ -24,7 +24,6 @@ namespace sock class socket_client : public std::enable_shared_from_this { tcp::resolver resolver_; - tcp::socket socket_; websocket::stream ws_; std::string host_; unsigned short port_; @@ -40,6 +39,8 @@ class socket_client : public std::enable_shared_from_this void socket_client_fail(beast::error_code ec, char const *what); + void on_write(error ec, std::size_t); + public: // Resolver and socket require an io_context socket_client(net::io_context &ioc, socket_session_handler &session_handler); diff --git a/src/sock/socket_server.cpp b/src/sock/socket_server.cpp index ab444df2..b68f281a 100644 --- a/src/sock/socket_server.cpp +++ b/src/sock/socket_server.cpp @@ -15,7 +15,7 @@ namespace sock { socket_server::socket_server(net::io_context &ioc, tcp::endpoint endpoint, socket_session_handler &session_handler) - : acceptor_(ioc), socket_(ioc), sess_handler_(session_handler) + : acceptor_(ioc), socket_(ioc),sess_handler_(session_handler) { error_code ec; @@ -83,10 +83,11 @@ void socket_server::on_accept(error_code ec) { unsigned short port = socket_.remote_endpoint().port(); std::string address = socket_.remote_endpoint().address().to_string(); + websocket::stream ws(std::move(socket_)); - // Launch a new session for this connection + // Launch a new session for this connection std::make_shared( - std::move(socket_), sess_handler_) + ws, sess_handler_) ->server_run(port, address); } diff --git a/src/sock/socket_session.cpp b/src/sock/socket_session.cpp index 0af25209..d8cc1ed8 100644 --- a/src/sock/socket_session.cpp +++ b/src/sock/socket_session.cpp @@ -11,8 +11,8 @@ using error_code = boost::system::error_code; namespace sock { -socket_session::socket_session(tcp::socket socket, socket_session_handler &sess_handler) - : ws_(std::move(socket)), sess_handler_(sess_handler) +socket_session::socket_session(websocket::stream &websocket, socket_session_handler &sess_handler) + : ws_(std::move(websocket)), sess_handler_(sess_handler) { } diff --git a/src/sock/socket_session.hpp b/src/sock/socket_session.hpp index 73500f5a..4f1f7963 100644 --- a/src/sock/socket_session.hpp +++ b/src/sock/socket_session.hpp @@ -27,7 +27,7 @@ class socket_session_handler; class socket_session : public std::enable_shared_from_this { beast::flat_buffer buffer_; - websocket::stream ws_; + websocket::stream ws_; std::vector> queue_; socket_session_handler &sess_handler_; @@ -40,7 +40,7 @@ class socket_session : public std::enable_shared_from_this void on_write(error ec, std::size_t bytes_transferred); public: - socket_session(tcp::socket socket, socket_session_handler &sess_handler); + socket_session(websocket::stream &websocket, socket_session_handler &sess_handler); unsigned short port_; std::string address_;