Я работаю над Ubuntu и пишу сервер на С++, который использует библиотеку 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
Однако, когда сервер не запущен, сообщение об ошибке не появляется, поэтому определенно происходит какое-то соединение. Но я не могу понять, что я делаю неправильно. Можно ли вообще легко подключить 2 бинарные программы через библиотеку websocket++?
Думаю, для достижения наилучших результатов тестирования производительности веб-сокеты следует использовать для связи между сервером и поддельными клиентами.
Спасибо за помощь,
Кунши