【问题标题】:Listen on data using Wt framework使用 Wt 框架监听数据
【发布时间】:2018-01-22 02:46:46
【问题描述】:

使用 Wt 在任何端口(例如 200.59.43.32:3333)上创建网页都很容易。

但是,当有人向它发送数据(一些数据字符串、json 等)时,是否有一个函数(我找不到)在同一个端口上监听。换句话说,如果有人向 200.59.43.32:3333 发送字符串“大量数据”数据,我如何使用 Wt 捕获它?

编辑:如果无法使用纯字符串,是否可以使用正确的 JSON?

我知道我可以使用 (linux) socket/bind 等打开另一个端口来监听这样的字符串。

【问题讨论】:

    标签: c++ json server frameworks wt


    【解决方案1】:

    如果它只是随机数据,我不知道你可以用 Wt 做到这一点。在这种情况下,您可以使用像 HAProxy 这样的反向代理解决方案,并将任何 HTTP 流量转发到 Wt,并将任何其他流量转发到另一个套接字。

    如果您谈论的是 HTTP 流量,那么静态资源可能就是您所追求的。 Wt 对TechEmpower framework benchmarks 的实现包含一些自定义静态资源,您可以在这些资源基础上编写代码。例如,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;
      }
    }
    

    【讨论】:

    【解决方案2】:

    如果你想发送纯字符串,你需要打开一个套接字。 HTTP 应用程序使用 HTTP 协议与客户端通信,因此要执行此“Wt-way”,您应该执行 HTTP 请求,GET 或 POST。

    据我了解,您需要创建一个WResource 并使用WServer::addResource() 在服务器中注册它,以便为其提供一个固定的URL。之后重新实现 WResource::handleRequest() 以访问 HTTP 请求数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-13
      • 2015-03-14
      • 2019-01-04
      • 1970-01-01
      • 1970-01-01
      • 2020-09-22
      • 2013-08-05
      相关资源
      最近更新 更多