【发布时间】:2017-07-17 00:54:57
【问题描述】:
我希望能够窃听到达我的一个微服务 (MS) 的 HTTP 消息。我认为唯一可行的方法是拥有一个代理,在做任何事情时将所有数据包转发给 MS。
所以我有一个用 java 编写的 MS 并且正在侦听端口(例如)9999。它有一个 REST GET 接口。因此,当我启动它并执行以下操作时:
curl http://localhost:9999/service/hello/mean
它返回,'Hello mean!' 正如预期的那样。现在我正在尝试窃听所有类似的消息,并且我有一个简单的代理服务。
代理服务所做的是在端口(例如)8080 上创建一个 ServerSocket 并监听连接。到目前为止,它所做的只是 accept() 的连接并从套接字流中读取字节,然后将 Socket 连接写入到 micro-服务正在监听 (在本例中为 9999)。
所以现在,我有:
ServerSocket ss = new ServerSocket(8080);
Socket server = new Socket("localhost", 9999);
我正在使用来自 ss 的输入流从客户端读取并通过套接字 server 写入服务器。
通过此设置,我正在执行 cURL 到代理正在侦听的端口 8080:
curl http://localhost:8080/service/hello/mean
我希望代理将请求直接转发给 MS 并返回。但这似乎不起作用。
在理解流程方面我遗漏了哪些原则? 任何帮助将不胜感激。
------------------------------------
编辑
我能够找到一个阻止此设置正常工作的初始问题,即我有其他进程在 PORT 8080。所以我把 proxy-port 改成了别的东西(比如 9099)。
现在,我可以访问 _proxy 服务并获得相应的响应。
谢谢
沙比尔
【问题讨论】:
标签: java sockets curl networking proxy