使用websocketpp库连接到一个c++ websocket服务器
Using websocketpp library to connect to a c++ websocket server
我正在Ubuntu上工作,我正在用c++编写一个服务器,使用websocket++库,它可以完美地处理来自浏览器的传入websocket连接(我在那里使用javascript)。
现在我想做一些性能测试,并连接许多自动化的"假"客户端。
为此,我想编写一个可以多次启动并连接到该服务器的程序。为此,我尝试了以下代码:
#include "websocketpp/src/roles/client.hpp"
#include "websocketpp/src/websocketpp.hpp"
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/thread.hpp>
#include "FakeClient.h"
using boost::asio::ip::tcp;
using websocketpp::client;
FakeClient::FakeClient()
{
thisPointer = boost::shared_ptr<FakeClient>(this);
client endpoint(thisPointer);
endpoint.alog().unset_level(websocketpp::log::alevel::ALL);
endpoint.elog().unset_level(websocketpp::log::elevel::ALL);
endpoint.elog().set_level(websocketpp::log::elevel::RERROR);
endpoint.elog().set_level(websocketpp::log::elevel::FATAL);
endpoint.connect("ws://localhost:9001/");
boost::thread t(&FakeClient::run, *this);
t.join();
}
void FakeClient::run()
{
while(true)
{
// send stuff here
usleep(100);
}
}
现在,当服务器启动并且假客户端尝试连接时,我只得到以下错误:
2013-04-23T16:00:02 [2] fail_on_expire timer expired with message: Timeout on WebSocket handshake
当服务器没有启动时,没有出现错误消息,所以肯定有某种连接正在发生。但我不知道我做错了什么。甚至有可能通过websocket++ lib轻松连接2个二进制程序吗?
为了获得最佳的性能测试结果,我想websockets应该用于服务器和假客户端之间的通信。
谢谢你的帮助,
Koonschi
WebSocket++作者在这里。WebSocket++绝对能够与自己对话。我创建了一些示例来演示如何做到这一点。看看下面两个(注意:这些例子使用了最新的0.3。X版本的库)。
遥测客户端:该客户端连接到指定的WebSocket服务器并每秒发送一次消息。https://github.com/zaphoyd/websocketpp/blob/experimental/examples/telemetry_client/telemetry_client.cpp
打印服务器:该服务器监听连接并打印接收到的所有消息。https://github.com/zaphoyd/websocketpp/blob/experimental/examples/print_server/print_server.cpp
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 运行同一解决方案的另一个项目的项目
- 挂起和取消挂起一个文件DLL
- 用C++中的一个变量定义一个常量
- 函数向量_指针有不同的原型,我可以构建一个吗
- 在c++中用vector填充一个简单的动态数组
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 预处理器:插入结构名称中的前一个行号
- 我在c++代码中生成了一个运行时#3异常
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 从链接列表c++中删除一个项目
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '