我在 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 来在服务器和假客户端之间进行通信。
谢谢您的帮助,
孔斯基