【问题标题】:HTTP service doesn't work [closed]HTTP服务不起作用[关闭]
【发布时间】:2019-01-10 16:41:11
【问题描述】:

我正在尝试使用 Hprose 在 Go 中实现 RPC 服务器。它工作得很好,但是在添加了更多功能之后却没有:/

有趣的是,它甚至在其他 http 库(例如 fasthttp)上也不起作用。 ListenAndServe() 方法似乎只是在执行过程中卡在某个地方,因为它永远不会返回。这可能是什么原因造成的?

package main


import (
    "net/http"
    "fmt"
     "github.com/hprose/hprose-golang/rpc"
    log "logutil"
)

func main() {
    log.InitializeLogger()
    InitializeEthClient()
    InitializeClients()
    server := rpc.NewHTTPService()

    // TxtStorage functions
    server.AddFunction("DeployTxtStorage", DeployNewTxtStorage)
    server.AddFunction("GetPackedData", GetPackedData)
    server.AddFunction("GetReputation", GetReputation)
    server.AddFunction("GetEventsForReputation", GetEventsForReputation)
    server.AddFunction("GetEventsForData", GetEventsForData)

    // Clients functions
    server.AddFunction("RegisterClient", RegisterClient)

    log.Info("Registered server functions!")
    err := http.ListenAndServe(":8080", server)
    fmt.Println(err)
    log.Info("Waiting for incoming connections...")
    log.WriteAway()
}

【问题讨论】:

  • 如果你不给人们一个最小的破例,你就没有答案的希望。
  • 我没有包含任何代码,因为我的工作被分成包含函数的各种文件,唯一与 http 相关的代码是一个简单的 http.ListenAndServe() 调用。无论如何,我会包括那个
  • “它工作得很好,但是在添加了更多功能之后它没有”导致问题的变化是什么?问题是什么? “它工作得很好,然后它没有”不是任何人都可以解决的问题。
  • 添加了一些函数 -> 注册了新的 rpc 函数 (server.AddFunction()) ... 而且我真的没有什么可以添加的了,看起来它根本不想工作
  • ListenAndServe() 不应该返回。你怎么知道它不起作用?你期望会发生什么?你连接到你的服务器了吗?如果失败,你会得到什么错误信息,你是如何测试它的?您是否使用例如检查过您的系统? netstat 验证您的程序当前是否正在侦听端口 8080 ?

标签: http go rpc


【解决方案1】:

ListenAndServe 正在阻塞,除非遇到错误,否则它不会返回。你似乎期待你的最后几行打印出来

Waiting for incoming connections...

但这永远不会在服务器运行时发生。您确定它没有按预期工作吗?

【讨论】:

  • 这很奇怪,因为它曾经到达那条线......?我现在真的很迷茫
  • 我们都有自己的时刻 :) 这可能是一个无情的地方,所以不妨尝试上面 nos 概述的一些调试步骤,如果仍然卡住,请在论坛或 golang 坚果上提问。
  • 它似乎正在工作 =\ 我想知道它是否真的到达了该代码行,或者我只是看到了一堆日志并认为“等待传入连接......”也在那里.谢谢你们的时间+1
猜你喜欢
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多