play with cpp_redis
This commit is contained in:
parent
2e9c610ac9
commit
5e1a4541bf
@ -135,3 +135,4 @@ set( IXWEBSOCKET_INCLUDE_DIRS
|
|||||||
target_include_directories( ixwebsocket PUBLIC ${IXWEBSOCKET_INCLUDE_DIRS} )
|
target_include_directories( ixwebsocket PUBLIC ${IXWEBSOCKET_INCLUDE_DIRS} )
|
||||||
|
|
||||||
add_subdirectory(ws)
|
add_subdirectory(ws)
|
||||||
|
add_subdirectory(third_party/cpp_redis)
|
||||||
|
@ -42,5 +42,5 @@ if (APPLE AND USE_TLS)
|
|||||||
target_link_libraries(ws "-framework foundation" "-framework security")
|
target_link_libraries(ws "-framework foundation" "-framework security")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
target_link_libraries(ws ixwebsocket)
|
target_link_libraries(ws ixwebsocket cpp_redis tacopie)
|
||||||
install(TARGETS ws RUNTIME DESTINATION bin)
|
install(TARGETS ws RUNTIME DESTINATION bin)
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "IXRedisClient.h"
|
#include "IXRedisClient.h"
|
||||||
#include <ixwebsocket/IXSocketFactory.h>
|
#include <ixwebsocket/IXSocketFactory.h>
|
||||||
#include <ixwebsocket/IXSocket.h>
|
#include <ixwebsocket/IXSocket.h>
|
||||||
|
#include <cpp_redis/cpp_redis>
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
@ -17,6 +18,14 @@ namespace ix
|
|||||||
{
|
{
|
||||||
bool RedisClient::connect(const std::string& hostname, int port)
|
bool RedisClient::connect(const std::string& hostname, int port)
|
||||||
{
|
{
|
||||||
|
_sub.connect(hostname, port, []
|
||||||
|
(const std::string& host, std::size_t port, cpp_redis::connect_state status) {
|
||||||
|
if (status == cpp_redis::connect_state::dropped) {
|
||||||
|
std::cout << "client disconnected from " << host << ":" << port << std::endl;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// also subscribe the old way
|
||||||
bool tls = false;
|
bool tls = false;
|
||||||
std::string errorMsg;
|
std::string errorMsg;
|
||||||
_socket = createSocket(tls, errorMsg);
|
_socket = createSocket(tls, errorMsg);
|
||||||
@ -28,11 +37,22 @@ namespace ix
|
|||||||
|
|
||||||
std::string errMsg;
|
std::string errMsg;
|
||||||
return _socket->connect(hostname, port, errMsg, nullptr);
|
return _socket->connect(hostname, port, errMsg, nullptr);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RedisClient::auth(const std::string& password,
|
bool RedisClient::auth(const std::string& password,
|
||||||
std::string& response)
|
std::string& response)
|
||||||
{
|
{
|
||||||
|
// authentication if server-server requires it
|
||||||
|
// _sub.auth(password, [&response](const cpp_redis::reply& reply) {
|
||||||
|
// if (reply.is_error()) { std::cerr << "Authentication failed: " << reply.as_string() << std::endl; }
|
||||||
|
// else {
|
||||||
|
// std::cout << "successful authentication" << std::endl;
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
|
||||||
|
return true;
|
||||||
|
#if 0
|
||||||
response.clear();
|
response.clear();
|
||||||
|
|
||||||
if (!_socket) return false;
|
if (!_socket) return false;
|
||||||
@ -60,6 +80,7 @@ namespace ix
|
|||||||
|
|
||||||
response = line;
|
response = line;
|
||||||
return lineValid;
|
return lineValid;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -101,6 +122,19 @@ namespace ix
|
|||||||
const OnRedisSubscribeResponseCallback& responseCallback,
|
const OnRedisSubscribeResponseCallback& responseCallback,
|
||||||
const OnRedisSubscribeCallback& callback)
|
const OnRedisSubscribeCallback& callback)
|
||||||
{
|
{
|
||||||
|
_sub.subscribe(channel, [&callback](const std::string& chan, const std::string& msg) {
|
||||||
|
callback(msg);
|
||||||
|
});
|
||||||
|
_sub.commit();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
auto duration = std::chrono::seconds(1);
|
||||||
|
std::this_thread::sleep_for(duration);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
#if 0
|
||||||
if (!_socket) return false;
|
if (!_socket) return false;
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -203,5 +237,6 @@ namespace ix
|
|||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
#include <cpp_redis/cpp_redis>
|
||||||
|
|
||||||
namespace ix
|
namespace ix
|
||||||
{
|
{
|
||||||
@ -35,6 +36,8 @@ namespace ix
|
|||||||
const OnRedisSubscribeCallback& callback);
|
const OnRedisSubscribeCallback& callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
cpp_redis::subscriber _sub;
|
||||||
|
|
||||||
std::shared_ptr<Socket> _socket;
|
std::shared_ptr<Socket> _socket;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user