对于 IPC 使用 websockets 是一个好主意吗?

Joh*_*ohn 5 python ipc websocket node.js

我有一个“主”进程和一些“工作”进程,我想在它们之间传递一些消息。这些消息可以是二进制 blob,但每个消息都有固定的大小。我想要一个抽象,它可以为我整齐地缓冲和分离每条消息。我不想在 TCP 之上发明自己的协议,而且我找不到任何可跨语言移植的简单+轻量级解决方案。(到目前为止,“主”进程是 Node.js 服务器,“工作”进程计划使用 Python。)

fre*_*ish 4

这个问题纯粹是基于意见,但无论如何我都会尝试一下:

在我看来,WebSocket 是一种矫枉过正的行为。首先,为了使 WebSockets 工作,您必须实现 HTTP(或至少是它的一些基本形式)来进行握手。如果您这样做,那么最好坚持使用“正常”HTTP,除非有全双工通信的原因。到处都有很多工具可以通过(unix 域)套接字处理 HTTP。

但这也可能有点矫枉过正。如果你有工人,那么我认为绩效很重要。最简单且(可能)最有效的解决方案是以下协议:每条消息以 1-8(选择一个数字)字节开头,这决定了后续内容的大小。内容是你想要的任何内容,例如 protobuf 消息。例如,如果您想发送foo,那么您就发送0x03 0x00 0x66 0x6f 0x6f。前两个字节对应于内容 (being) 的大小3,然后 3 个字节对应于foo