From 2e5f24f1f8b48955e11996b470ee014460c4ebfd Mon Sep 17 00:00:00 2001 From: Benjamin Sergeant Date: Sun, 9 Jun 2019 10:22:27 -0700 Subject: [PATCH] ... --- CHANGELOG.md | 5 ++++- CMakeLists.txt | 4 ++++ ixwebsocket/IXWebSocket.cpp | 6 ++++++ ixwebsocket/IXWebSocket.h | 4 +++- ixwebsocket/IXWebSocketMessageQueue.cpp | 8 ++++---- test/IXWebSocketMessageQTest.cpp | 2 +- ws/ws_chat.cpp | 2 +- ws/ws_connect.cpp | 2 +- ws/ws_send.cpp | 4 ++-- 9 files changed, 26 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6c3cb05..7c3f2d7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,11 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - 2019-06-xx ### Changed -- IXSocketMbedTLS: better error handling in close and connect +- Add explicite WebSocket::sendBinary +- New headers + WebSocketMessage class to hold message data, still not used across the board +- Add test/compatibility folder with small servers and clients written in different languages and different libraries to test compatibility. - ws echo_server has a -g option to print a greeting message on connect +- IXSocketMbedTLS: better error handling in close and connect ## [3.1.2] - 2019-06-06 ### Added diff --git a/CMakeLists.txt b/CMakeLists.txt index 66c3c517..18d334de 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,10 @@ set( IXWEBSOCKET_HEADERS ixwebsocket/IXWebSocketHandshake.h ixwebsocket/IXWebSocketSendInfo.h ixwebsocket/IXWebSocketErrorInfo.h + ixwebsocket/IXWebSocketCloseInfo.h + ixwebsocket/IXWebSocketOpenInfo.h + ixwebsocket/IXWebSocketMessageType.h + ixwebsocket/IXWebSocketMessage.h ixwebsocket/IXWebSocketPerMessageDeflate.h ixwebsocket/IXWebSocketPerMessageDeflateCodec.h ixwebsocket/IXWebSocketPerMessageDeflateOptions.h diff --git a/ixwebsocket/IXWebSocket.cpp b/ixwebsocket/IXWebSocket.cpp index 71b1923d..9e7e4ed6 100644 --- a/ixwebsocket/IXWebSocket.cpp +++ b/ixwebsocket/IXWebSocket.cpp @@ -380,6 +380,12 @@ namespace ix return sendMessage(data, SendMessageKind::Binary, onProgressCallback); } + WebSocketSendInfo WebSocket::sendBinary(const std::string& text, + const OnProgressCallback& onProgressCallback) + { + return sendMessage(text, SendMessageKind::Binary, onProgressCallback); + } + WebSocketSendInfo WebSocket::sendText(const std::string& text, const OnProgressCallback& onProgressCallback) { diff --git a/ixwebsocket/IXWebSocket.h b/ixwebsocket/IXWebSocket.h index 221b9ffa..7fbb5d52 100644 --- a/ixwebsocket/IXWebSocket.h +++ b/ixwebsocket/IXWebSocket.h @@ -69,9 +69,11 @@ namespace ix WebSocketInitResult connect(int timeoutSecs); void run(); - // send binary data + // send is in binary mode by default WebSocketSendInfo send(const std::string& data, const OnProgressCallback& onProgressCallback = nullptr); + WebSocketSendInfo sendBinary(const std::string& text, + const OnProgressCallback& onProgressCallback = nullptr); WebSocketSendInfo sendText(const std::string& text, const OnProgressCallback& onProgressCallback = nullptr); WebSocketSendInfo ping(const std::string& text); diff --git a/ixwebsocket/IXWebSocketMessageQueue.cpp b/ixwebsocket/IXWebSocketMessageQueue.cpp index 50aebe66..62db9098 100644 --- a/ixwebsocket/IXWebSocketMessageQueue.cpp +++ b/ixwebsocket/IXWebSocketMessageQueue.cpp @@ -55,7 +55,7 @@ namespace ix const WebSocketOpenInfo& openInfo, const WebSocketCloseInfo& closeInfo) { - MessagePtr message(new Message()); + auto message = std::make_shared(); message->type = type; message->str = str; @@ -82,9 +82,9 @@ namespace ix _onMessageUserCallback = std::move(callback); } - WebSocketMessageQueue::MessagePtr WebSocketMessageQueue::popMessage() + WebSocketMessagePtr WebSocketMessageQueue::popMessage() { - MessagePtr message; + WebSocketMessagePtr message; std::lock_guard lock(_messagesMutex); if (!_messages.empty()) @@ -101,7 +101,7 @@ namespace ix if (!_onMessageUserCallback) return; - MessagePtr message; + WebSocketMessagePtr message; while (count > 0 && (message = popMessage())) { diff --git a/test/IXWebSocketMessageQTest.cpp b/test/IXWebSocketMessageQTest.cpp index 739155ef..9d12b7b5 100644 --- a/test/IXWebSocketMessageQTest.cpp +++ b/test/IXWebSocketMessageQTest.cpp @@ -20,7 +20,7 @@ namespace { server.setOnConnectionCallback( [&server](std::shared_ptr webSocket, - std::shared_ptr connectionState) + std::shared_ptr connectionState) { webSocket->setOnMessageCallback( [connectionState, &server](ix::WebSocketMessageType messageType, diff --git a/ws/ws_chat.cpp b/ws/ws_chat.cpp index 9c3df9d9..825a7aea 100644 --- a/ws/ws_chat.cpp +++ b/ws/ws_chat.cpp @@ -172,7 +172,7 @@ namespace ix void WebSocketChat::sendMessage(const std::string& text) { - _webSocket.send(encodeMessage(text)); + _webSocket.sendText(encodeMessage(text)); } int ws_chat_main(const std::string& url, diff --git a/ws/ws_connect.cpp b/ws/ws_connect.cpp index 1ee665b4..3ad42bec 100644 --- a/ws/ws_connect.cpp +++ b/ws/ws_connect.cpp @@ -138,7 +138,7 @@ namespace ix void WebSocketConnect::sendMessage(const std::string& text) { - _webSocket.send(text); + _webSocket.sendText(text); } int ws_connect_main(const std::string& url, diff --git a/ws/ws_send.cpp b/ws/ws_send.cpp index afd0b8b7..ac03ff64 100644 --- a/ws/ws_send.cpp +++ b/ws/ws_send.cpp @@ -244,8 +244,8 @@ namespace ix MsgPack msg(pdu); Bench bench("Sending file through websocket"); - _webSocket.send(msg.dump(), - [throttle](int current, int total) -> bool + _webSocket.sendBinary(msg.dump(), + [throttle](int current, int total) -> bool { std::cout << "ws_send: Step " << current << " out of " << total << std::endl;