Ktor 项目 localhost:8080 拒绝连接

问题描述 投票:0回答:4

我正在开发一个 ktor 项目,一切都运行良好。我启动了服务器,它在端口 8080 上工作正常,但现在由于某种原因突然停止工作。我杀死了任务并尝试了一切,我不确定出了什么问题。我尝试重新安装 IntelliJ Idea,但仍然面临同样的问题。我尝试使用 127.0.0.1 , 0.0.0.0 ,本地主机,但他们都不知道该怎么做。我在这件事上浪费了大约2个小时。我尝试过更改端口、阻止防火墙和防病毒软件。

java kotlin port ktor
4个回答
3
投票

如果您使用 wifi,请将 127.0.0.1(localhost) 更改为您的私有 IP,例如 172.30.1.59。如果您使用固定IP,则使用它。我有同样的问题,但用这个解决它。好的! cmd -> ipconfig -> 使用 IP 地址


1
投票

我也遇到了同样的问题,结果发现是因为我安装了 HttpsRedirect 和 HSTS 插件。因此,它拒绝处理 http 请求,并且由于我没有本地主机或我的本地 IP 的任何证书,所以它不起作用。

在本地运行时禁用这两个插件使事情对我有用。


0
投票

我在使用 Ktor 时经常遇到同样的问题,这令人沮丧。然后我将发布以下可能的修复方法,您应该按顺序尝试并阅读步骤。我将考虑您正在一台独特的计算机上为您的 Android 应用程序运行 WebSocket 服务器和 WebSocket 客户端。

  1. 您正在使用相同的 IP 运行服务器端和客户端 它不应该工作,因为客户端无法连接到 服务器。当我测试一个需要服务器端的项目时 客户端我使用我的计算机运行 Android 应用程序和笔记本电脑 运行服务器端。如果这不是您的情况,那么,请执行以下操作 没注意。

  2. 在客户端,当你创建HttpClient的实例时, 你是否将任何值传递给客户端作为引擎,或者你只是简单地去 直接用lambda?根据我的经验,当我创建 HttpClient 实例,仅适用于以下两个:

    val client = HttpClient {
       install(WebSockets)
    }
    

    val client = HttpClient(CIO){
       install(WebSockets)
    }
    

    不适合我的引擎是:

    val client = HttpClient(OkHttp) {
       install(WebSockets)
    }
    
  3. 最后,当你使用过去的客户端创建WebSocket时 例如,你应该使用

    client.ws(
            HttpMethod.Get,
            "localhost",
            8080,
            "/"
    )
    {
    //Client code
    }
    

    而不是 client.wss。那是因为在本地连接中,您的客户端 不要使用 TLS 安全性进行连接,否则会引发异常。如果 您正在将服务器端部署在具有 TLS 安全性的托管中 作为Heroku,那么你可以使用wss,因为客户端 将使用 TLS 证书进行连接。

希望我的回答可以帮到你。祝你好运!


0
投票

对于 Android 开发者:如果在 android-studio-emulator 上运行应用程序,则将

http://localhost:8080/
替换为
http://10.0.2.2:8080/

© www.soinside.com 2019 - 2024. All rights reserved.