需要使用同一连接从服务器进行多次推送
Need multiple push from server using same connection
我正在尝试实现一个简单的 UI,它将显示在我的服务器控制台中写入的日志。已搜索但找不到满足我要求的解决方案。
根据我的设计,我有一个 java 程序使用 Apache common-io api 来跟踪日志文件。它帮助我减少内存开销,我不想在内存中保留大块。
因此,当客户端发出请求时,服务器应开始读取文件并递增地发送读取的数据,并应一直显示直到客户端停止接收。我不希望发送多个请求,因为这会使应用程序一次又一次地读取文件并添加到我需要维护的文件中 state/offset (可能的解决方案,但要避免它)。
我尝试使用异步响应检查 JAX-RS,但这似乎没有帮助。我不确定 HTTP/2 是否有帮助。
请帮助我了解这是如何实现的,以及我是否需要在客户端和服务器端实现套接字编程,或者是否有任何此类协议可以使用。我愿意修改技术堆栈。
谢谢
您可以使用任何支持持久流连接的协议(有很多)。
如果您已经在使用 JAX-RS,那么 StreamingOutput 可能就是您想要的。
经过更多的搜索,我终于找到了一堆实现我提到的方法的方法。在我想解释一下它是如何不能使用 HTTP 实现的(特别是 Rest)之前。
HTTP 方式: 在 HTTP and/or HTTP2 中,您可以通过在两个版本中使用长轮询或使用多路复用来创建持久连接的方式很少 属性 出现在 http2.在这两种情况下,TCP 中的底层协议因此没有太大区别。但是,在 HTTP/HTTP2 中,事务以一种方式发生,一旦服务器收到请求并发回响应,它就不会期望客户端再次收到响应,客户端也不希望收到响应。所以一个完整的循环包括一对请求和响应。因此,如果您尝试发送另一个响应,则不能这样做,因为客户端和服务器都无法分别接收或发送该响应。 Google 中有很多资源可以获取更深入的信息。This 有很好的解释和参考
所以我尝试检查是否可以使用一些套接字编码来保持连接活动并传输数据。幸运的是,我偶然发现了另一种实现这一目标的方法。
我觉得对我的要求更有意义的两个如下。我不会试图解释它们只是为了避免在这里提供错误的信息,因为我自己正在尝试获得更多见解。
1.服务器端事件(SSE)
2。 WebSockets
This 会给出关于他们的票价建议。
我正在尝试实现一个简单的 UI,它将显示在我的服务器控制台中写入的日志。已搜索但找不到满足我要求的解决方案。
根据我的设计,我有一个 java 程序使用 Apache common-io api 来跟踪日志文件。它帮助我减少内存开销,我不想在内存中保留大块。 因此,当客户端发出请求时,服务器应开始读取文件并递增地发送读取的数据,并应一直显示直到客户端停止接收。我不希望发送多个请求,因为这会使应用程序一次又一次地读取文件并添加到我需要维护的文件中 state/offset (可能的解决方案,但要避免它)。
我尝试使用异步响应检查 JAX-RS,但这似乎没有帮助。我不确定 HTTP/2 是否有帮助。
请帮助我了解这是如何实现的,以及我是否需要在客户端和服务器端实现套接字编程,或者是否有任何此类协议可以使用。我愿意修改技术堆栈。
谢谢
您可以使用任何支持持久流连接的协议(有很多)。
如果您已经在使用 JAX-RS,那么 StreamingOutput 可能就是您想要的。
经过更多的搜索,我终于找到了一堆实现我提到的方法的方法。在我想解释一下它是如何不能使用 HTTP 实现的(特别是 Rest)之前。
HTTP 方式: 在 HTTP and/or HTTP2 中,您可以通过在两个版本中使用长轮询或使用多路复用来创建持久连接的方式很少 属性 出现在 http2.在这两种情况下,TCP 中的底层协议因此没有太大区别。但是,在 HTTP/HTTP2 中,事务以一种方式发生,一旦服务器收到请求并发回响应,它就不会期望客户端再次收到响应,客户端也不希望收到响应。所以一个完整的循环包括一对请求和响应。因此,如果您尝试发送另一个响应,则不能这样做,因为客户端和服务器都无法分别接收或发送该响应。 Google 中有很多资源可以获取更深入的信息。This 有很好的解释和参考
所以我尝试检查是否可以使用一些套接字编码来保持连接活动并传输数据。幸运的是,我偶然发现了另一种实现这一目标的方法。
我觉得对我的要求更有意义的两个如下。我不会试图解释它们只是为了避免在这里提供错误的信息,因为我自己正在尝试获得更多见解。
1.服务器端事件(SSE)
2。 WebSockets
This 会给出关于他们的票价建议。