2017-08-14 11 views
1

Wtを使用してWebページを作成するのは簡単です(たとえば、200.59.43.32:3333など)。Wtフレームワークを使用してデータをリッスン

しかし、誰かがデータを送信したときに同じポートでリッスンする機能があります(データストリング、jsonなど)。言い換えれば、誰かが "多くのデータ"という文字列を200.59.43.32:3333に送信した場合、どうすればWtを使ってそれを取得できますか?

編集:プレーンな文字列では不可能な場合は、適切なJSONで可能ですか?

私はあなたが、プレーン文字列を送信したい場合は、ソケットを開く必要があります。..

答えて

0

私は(Linux)のソケットに/ etcをバインドを使用して、このような文字列で待機するように別のポートを開くことができます知っています。 HTTPアプリケーションはHTTPプロトコルを使用してクライアントとやりとりするため、この「Wt-way」を実行するには、HTTP要求(GETまたはPOST)を行う必要があります。

私が理解したところでは、WResourceを作成し、WServer::addResource()を使用してサーバー内に登録して、固定URLにする必要があります。その後、WResource::handleRequest()を再実装してHTTP要求データにアクセスします。

0

ランダムなデータであれば、あなたがWtでそれを行うことができるということはわかりません。その場合、HAProxyのようなリバースプロキシソリューションを使用して、WtへのHTTPトラフィックと他のすべてのトラフィックを別のソケットに転送することができます。

HTTPトラフィックについて言えば、静的リソースはあなたの後のものかもしれません。 TechEmpower framework benchmarksのWtの実装には、コードの基になるカスタム静的リソースがいくつか含まれています。例えば、PlaintextResourceがあります:

class PlaintextResource : public Wt::WResource { 
    virtual void handleRequest(const Wt::Http::Request &request, Wt::Http::Response &response) { 
    response.setMimeType("text/plain"); 
    response.addHeader("Server", "Wt"); 

    response.out() << "Hello, World!"; 
    } 
}; 

あなたが要求に関するあらゆるデータを取得するためにrequest変数を使用することができ、Wt::Http::Requestを参照してください。あなたはこのようなこのリソースにアクセスできるようにすることができます

int main(int argc, char** argv) { 
    try { 
    Wt::WServer server(argv[0]); 

    server.setServerConfiguration(argc, argv, WTHTTP_CONFIGURATION); 

    PlaintextResource plaintextResource; 
    server.addResource(&plaintextResource, "/plaintext"); 

    if (server.start()) { 
     int sig = Wt::WServer::waitForShutdown(argv[0]); 

     std::cerr << "Shutdown (signal = " << sig << ")" << std::endl; 
     server.stop(); 
    } 
    } catch (Wt::WServer::Exception& e) { 
    std::cerr << e.what() << "\n"; 
    return 1; 
    } catch (std::exception& e) { 
    std::cerr << "exception: " << e.what() << "\n"; 
    return 1; 
    } 
} 
+0

は、文字列がが正しいJSONで何かあれば、ありがとう! – Levi

+0

HTTP経由でJSONを送信する場合は、 'std :: istream&'を返す 'request.in()'からJSONを取得できます。 それを 'Wt :: Json :: parse()'で解析できます。https://www.webtoolkit.eu/wt/doc/reference/html/namespaceWt_1_1Json.htmlを参照してください。 – RockinRoel

関連する問題