Java Can';无法识别客户端http头何时完成
我使用Java Can';无法识别客户端http头何时完成,java,scala,websocket,Java,Scala,Websocket,我使用ServerSocket.accept()等待客户端,然后按如下方式处理: val in = new BufferedReader(new InputStreamReader(socket.getInputStream())) var line = in.readLine() while (line != null) { //... line = in.readLine() } 为了发送响应,我如何知道客户端已完成发送头 具体而言,我指的是这些标题: GET /mychat HTTP/1
ServerSocket.accept()
等待客户端,然后按如下方式处理:
val in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
var line = in.readLine()
while (line != null) {
//...
line = in.readLine()
}
为了发送响应,我如何知道客户端已完成发送头
具体而言,我指的是这些标题:
GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com
但它不起作用
有效的方法是
line.isEmpty()
。但这很奇怪,因为流应该包含某些内容,而所有包含的内容都返回false websocket握手只是一个http请求。因此,您应该能够通过回车符/换行符(\r\n)判断标题何时结束
你用的是什么客户机?也许客户有问题
您知道自己不需要构建websockets库。有许多开源的替代方案,比如作为其一部分的一个。
readLine
从它读取的每一行末尾删除\r\n
,因此空行就是”
,没有任何\r
或\n
字符。我更改了标题,使问题更一般(http标题),谢谢
if (line.contains("\r\n")) {
println("1")
}
if (line.contains("\r")) {
println("2")
}
if (line.contains("\n")) {
println("3")
}