我用ServerSocket.accept()
等待客户端,然后像这样处理:
val in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
var line = in.readLine()
while (line != null) {
//...
line = in.readLine()
}
我如何知道客户端已完成发送 header ,以便发送响应?
具体来说,我指的是这些标题:
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
Like described: http://en.wikipedia.org/wiki/WebSocket
I tried:
if (line.contains("\r\n")) {
println("1")
}
if (line.contains("\r")) {
println("2")
}
if (line.contains("\n")) {
println("3")
}
但是没用...
行之有效的是line.isEmpty()
。但这很奇怪,因为流应该包含一些东西,而所有包含的东西都返回 false...
最佳答案
readLine
从它读取的每一行末尾删除 \r\n
,因此空行只是 ""
,没有任何内容\r
或 \n
字符。
关于java - 无法识别客户端 http header 何时完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11812123/