如何在Groovy中通过ServerSocket对分块数据使用filterLine()

如何在Groovy中通过ServerSocket对分块数据使用filterLine(),groovy,jetty,bufferedreader,serversocket,Groovy,Jetty,Bufferedreader,Serversocket,我正在尝试使用“ServerSocket”从一个客户端接收HTTP消息,该客户端将这些消息作为分块发布。我只想捕获发布的文本内容(纯文本)。欢迎就如何更好地做到这一点提供任何意见 这是我现有的非常不优雅的解决方案。在处理ServerSocket时,必须手动处理头和块屏障,这就是我想到的。我在阅读器上查看了filterLine()方法,可能这是解决方案的一部分,我不确定。不知道如何优雅/可靠地识别分块障碍 socket.withStreams { input, output -> B

我正在尝试使用“ServerSocket”从一个客户端接收HTTP消息,该客户端将这些消息作为分块发布。我只想捕获发布的文本内容(纯文本)。欢迎就如何更好地做到这一点提供任何意见

这是我现有的非常不优雅的解决方案。在处理ServerSocket时,必须手动处理头和块屏障,这就是我想到的。我在阅读器上查看了filterLine()方法,可能这是解决方案的一部分,我不确定。不知道如何优雅/可靠地识别分块障碍

socket.withStreams { input, output ->
    BufferedReader reader = new BufferedReader(new InputStreamReader(input))

    while (currentLineCount < processor.newLineCount) {
        line = reader.readLine()

        if (line && line.size() > 3) {
            processor.processFormats(line)
        }
        currentLineCount++
    }
}
socket.withStreams{输入,输出->
BufferedReader reader=新的BufferedReader(新的InputStreamReader(输入))
while(currentLineCount3){
processor.processFormats(行)
}
当前行数++
}
}
注意事项:

  • 我一直在尝试逐行处理以最小化内存影响,而不是缓冲整个集合。我想保持这样

  • 这4个Jetty库在类路径上可用,因此我可以利用它们,但不能添加其他库

    编译“org.eclipse.jetty:jetty服务器:8.1.2.v20120308” 编译“org.eclipse.jetty:jetty continuation:8.1.2.v20120308” 编译“org.eclipse.jetty:jetty io:8.1.2.v20120308” 编译“org.eclipse.jetty:jetty util:8.1.2.v20120308”


  • 我会在Jetty中重新制作整个HTTP服务器和处理程序,但我从未使用过Jetty,也找不到任何适合我的情况的好例子。任何关于这方面的代码示例的建议都将非常好

    那个版本的Jetty非常古老,现在是EOL(生命的终结)。为什么不使用Jetty和/或servlet来处理
    doPost(请求、响应)
    信息?它们位于执行我的嵌入式代码的托管第三方系统的类路径上。他们只是碰巧是在那里的版本。这不是我能控制的。另外,我刚刚发现servlet-api-3.0.0和netty-all-4.0.9.Final.jar也在类路径上,因此可以使用它们。