java - 无法识别客户端 http header 何时完成

标签 java scala websocket

我用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/

相关文章:

java - 有什么方法可以让我的 JavaFX 代码更加清晰吗?

java - Spring 集成 jpa 存储库测试无法正常工作

scala - 如何在 Anorm 中处理 null

google-chrome - _webSocketTraffic 的 Chrome 开发工具 .har 文件有一个 "time"字段——这是什么意思?

ios - 在iOS App Store上提交的应用程序:websocket连接失败

java - android 在另一个 Activity 发生更改后更新 Activity TextView

java - 一起使用 TableCellRenderer 和 getColumnClass

scala - 对重载定义的不明确引用,来自 Java 库

scala - 如何在 Akka HTTP 中将数字流完成为 CSV 值?

javascript - 将音频缓冲区发送到扬声器