我们构建的软件由两部分组成,一个在浏览器中运行的GUI(前端)和一个内核(后端),Go编译成exe。
为了将这两个部分粘合在一起,我们在本地机器上运行了nodejs + expressjs + socket.io。 Nodejs通过http / socket.io与浏览器对话,它也会产生"产生"将exe作为child_process。
现在使用websocketd,我们可以跳过nodejs + expressjs + socket.io部分。那很好。
难点在于:浏览器中的GUI用于将JSON发送到nodejs,然后将其写入配置文件。我们的内核exe将读取该JSON配置文件以确定要执行的操作。
我猜不能通过STDIN / STDOUT发送JSON。我当然可以做命令行" flag" for Go to parse。
问题:有更好的方法吗?
答案 0 :(得分:1)
您可以在go app中运行websocket服务器,在那里您可以处理所有相关的路由和逻辑。它可能会使事情变得更简单,更灵活。
这是我之前使用过的库,可以推荐: https://github.com/gorilla/websocket
答案 1 :(得分:0)
这对派对来说已经很晚了,而且可能在这一点上无济于事,但它可能有助于未来的人看到这一点。
Websocketd支持二进制传输类型并删除/n
行结尾。这可以通过缓冲输入和输出二进制流来使用,并且只是在两端读取它们作为json。
https://github.com/joewalnes/websocketd/issues/38
websocketd --devconsole --port 8080 --binary --devconsole stdbuf -i0 -io0 cat
--binary
标志是该链接的重要部分。 (甚至连链接都死了)。