akka tcp 示例在连接时冻结
akka tcp example freezes on connection
我已经写出来了this akka tcp example,和官方的例子很接近,但是更容易上手。
我没有制作 sbt 或依赖文件,因为我假设 IntelliJ 已经为我完成了这些文件,因为我拥有来自 maven 的所有正确参考和库。
我在 IntelliJ 中编写了示例,当我 运行 它似乎一切正常但是当我从 CMD telnet 到服务器时,telnet 只是保持 connecting to 127.0.0.1
然后当我关闭终端时,它在服务器日志中显示
[INFO] [04/04/2015 12:02:43.207] [System-akka.actor.default-dispatcher-3] [akka://System/user/Server/$a] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://System/user/Server/$a#1949766491] to Actor[akka://System/user/Server/$a#1949766491] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
我认为我没有处理此消息的情况,这很好,但是当暗示存在某种连接时 telnet 只是冻结这一事实令人沮丧。
鉴于此示例适用于其他人,我并不是说让人们调试代码,也就是说 windows 上的 telnet 是否有问题或类似的错误?
所以这个解决方案是一个有趣的组合。
首先,none 的教程非常实用,提到需要在文件中设置日志级别 application.conf
application.conf:
akka {
loglevel = "DEBUG"
}
如果没有设置日志级别,log.debug 语句默认情况下从不显示,这会使调试方式更容易(有趣的是)
其次,windows 上的 telnet(无论如何在默认配置中)似乎只允许您一次发送一个字符,这很奇怪,导致单个字符数据包。让我陷入循环的部分是 telnet,而不是在新行上写类似 "PACKET RECEIVED: a" 的东西,只需将回显的 'a' 放在与按键相同的行上,导致
aa
每次在终端中按下 'a' 让我相信存在问题,但实际上并没有
我已经写出来了this akka tcp example,和官方的例子很接近,但是更容易上手。
我没有制作 sbt 或依赖文件,因为我假设 IntelliJ 已经为我完成了这些文件,因为我拥有来自 maven 的所有正确参考和库。
我在 IntelliJ 中编写了示例,当我 运行 它似乎一切正常但是当我从 CMD telnet 到服务器时,telnet 只是保持 connecting to 127.0.0.1
然后当我关闭终端时,它在服务器日志中显示
[INFO] [04/04/2015 12:02:43.207] [System-akka.actor.default-dispatcher-3] [akka://System/user/Server/$a] Message [akka.dispatch.sysmsg.DeathWatchNotification] from Actor[akka://System/user/Server/$a#1949766491] to Actor[akka://System/user/Server/$a#1949766491] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
我认为我没有处理此消息的情况,这很好,但是当暗示存在某种连接时 telnet 只是冻结这一事实令人沮丧。
鉴于此示例适用于其他人,我并不是说让人们调试代码,也就是说 windows 上的 telnet 是否有问题或类似的错误?
所以这个解决方案是一个有趣的组合。
首先,none 的教程非常实用,提到需要在文件中设置日志级别 application.conf
application.conf:
akka {
loglevel = "DEBUG"
}
如果没有设置日志级别,log.debug 语句默认情况下从不显示,这会使调试方式更容易(有趣的是)
其次,windows 上的 telnet(无论如何在默认配置中)似乎只允许您一次发送一个字符,这很奇怪,导致单个字符数据包。让我陷入循环的部分是 telnet,而不是在新行上写类似 "PACKET RECEIVED: a" 的东西,只需将回显的 'a' 放在与按键相同的行上,导致
aa
每次在终端中按下 'a' 让我相信存在问题,但实际上并没有