簡體   English   中英

使用 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 來在服務器和假客戶端之間進行通信。

謝謝您的幫助,

孔斯基

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM