现在 Golang 用的越来越多,但是很多时候又舍弃不了 Node.js/TypeScript 的动态特性。
最近就有这么一个需求,某些特殊的处理逻辑需要使用动态处理和一些强反射需求,这些正好是 Go 不擅长的。
怎么办呢?
以前用 Node 的时候可以直接使用 process.send
和 process.on
来和子进程进行通信,以达到 fork 和多线程的效果。
基于上述诉求,就有了 go2node 的产生。
go2node 借助 Node.js 本身已有的 IPC 协议,支持消息和文件描述符 (File Descirptor) 的传递,
由于可以传递 FD,我们甚至可以让 Node 接管由 Go 监听到的网络连接。
Node IPC 消息默认序列化使用 JSON,因此在 Go 中需要自行处理 JSON 反序列化。
Node 不需要依赖任何第三方库,Go 的代码也仅依赖标准库,因此代码较干净。
依托于 Golang 和 Node.js 对 WebAssembly 的支持,这个库的可玩性和灵活性大有可为。
支持的系统:
未来的应用系统会越来越复杂,异构系统会越来越常见,我们考虑的是用合适的语言解决合适的问题,
开发 go2node 也是为了进行这样一种尝试,同时也算是抛转引玉,看看大家对这方面有什么好的意见。
欢迎 Star 和 Report Issue
1
janxin 2019-01-26 01:26:47 +08:00 via iPhone
感觉 rpc 会更方便点?
|
3
luozic 2019-01-26 01:46:26 +08:00 via iPhone
为啥不学习 deno ?
|
4
reus 2019-01-29 00:19:34 +08:00
go 反射可以动态构造类型,动态构造函数,几乎什么都能做,哪有不擅长
|