使用websocketpp库连接到c ++ websocket服务器

时间:2013-04-23 14:11:49

标签: c++ websocket++

我正在使用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

1 个答案:

答案 0 :(得分:13)

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