如何使nodej与golang交谈

我在node.js和golang中创build一个web应用程序。 我需要连接nodejs与golang代码,它与mongodb进行通信,并将数据返回给节点程序。 有什么办法可以连接吗? 我试图使用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 main import( 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 } 

这是我在terminalevents.js:72 throw er; // Unhandled 'error' event ^ Error: write EPIPE at errnoException (net.js:905:11) at Object.afterWrite (net.js:721:19)运行node 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) events.js:72 throw er; // Unhandled 'error' event ^ Error: write EPIPE at errnoException (net.js:905:11) at Object.afterWrite (net.js:721:19)

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

基于对生殖器源代码的非常草率的检查,该模块似乎产生了代码作为subprocess,并通过stdin / -out进行通信。 EPIPE错误意味着另一端closures了stream。 基于此,可能会导致您的stream程过早退出。

您可以通过修改gonode / lib / command.js中的Command.prototype.execute来尝试debugging问题,以打印发送到转移过程的JSON。 然后你可以通过直接运行并通过stdin给它input相同的input来debugginggo程序。