为了账号安全,请及时绑定邮箱和手机立即绑定

如何让 nodejs 与 golang 对话

如何让 nodejs 与 golang 对话

Go
慕尼黑5688855 2021-10-18 11:12:30
我正在 node.js 和 golang 中创建一个 web 应用程序。我需要将 nodejs 与 golang 代码连接起来,golang 代码会与 mongodb 对话并将数据返回给 node 程序。有什么办法可以连接吗?我尝试使用 gonode API。这是我使用 gonode API 的代码。我的 node.js 文件包含以下代码:var Go = require('gonode').Go;var options = {path : 'gofile.go',initAtOnce : true,}var go = new Go(options,function(err){if(err) throw err;go.execute({commandText: 'Hello world from gonode!'}, function(result, response) {        if(result.ok) {            console.log('Go responded: ' + response.responseText);        }});go.close();});     `这是我的 gofile.go 文件中的代码:package mainimport(    gonode "github.com/jgranstrom/gonodepkg"    json "github.com/jgranstrom/go-simplejson")func main(){    gonode.Start(process)}func process(cmd *json.Json) (response *json.Json) {        response, m := json.MakeMap()    if(cmd.Get("commandText").MustString() == "Hello") {        m["responseText"] = "Well hello there!"    } else {        m["responseText"] = "What?"    }    return}这是在终端中作为节点 node.js 运行时出现的错误events.js:72        throw er; // Unhandled 'error' event              ^Error: write EPIPE    at errnoException (net.js:905:11)    at Object.afterWrite (net.js:721:19)
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

感谢您的回复。我得到了一个解决方案。我做了2个不同的服务器。一个用于 NodeJS,另一个用于 Golang。我在 Node 服务器中调用 golang uri 并从 golang 服务器获取数据。


查看完整回答
反对 回复 2021-10-18
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

基于对 gonode 源代码的粗略检查,该模块似乎将 go 代码生成为子进程并通过 stdin/-out 进行通信。EPIPE 错误意味着另一端关闭了流。基于此,可能是您的 go 进程过早退出。

您可以尝试通过修改 gonode/lib/command.js 中的 Command.prototype.execute 来打印出发送到 go 进程的 JSON 来调试问题。然后你可以通过直接运行它并通过标准输入给它相同的输入来调试 go 程序。


查看完整回答
反对 回复 2021-10-18
  • 3 回答
  • 0 关注
  • 226 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信