【发布时间】: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 ?