我们正在用 C 语言开发 DDP 服务器(不要问为什么 - 我们只是需要)。我们注意到 Meteor 使用 SockJS 来实现其 DDP 协议(protocol)。虽然有一些库允许我用 C 语言进行 Web 套接字,但我还没有找到任何适用于 C 语言的 SockJS 库。
SockJS 库似乎相当庞大,并且由于没有关于它如何运行的规范,因此尝试逆向工程其技巧听起来是一种非常脆弱的方法。
这让我想知道让我们支持 DDP 的最佳策略是什么。我能想到的选项很少:
- 我可以导入 V8 引擎并使用它在 C++ 和 JavaScript 实现之间建立桥梁(然后我可以相对轻松地将其公开给 C)
- 我可以将 SockJS 库 X 用于语言 Y,并使用 Python/C/JNI/... 与之交互
- 也许我可以强制 Meteor 仅使用网络套接字(DDP 文档似乎表明这是可能的,但我不知道如何实现)。
如果可能的话,选项 3 将是最省力的方法,但会继承 WebSocket 的问题(浏览器互操作性、公司防火墙等)。
选项 1 和 2 是可行的,但我必须包含的库的大小与我将使用的功能不成比例。
考虑到上述情况,似乎没有一个完美的解决方案。但是我想验证上述选项的可行性,并知道我是否错过了一些东西。另外,如果有人以前尝试过这个,我很想听听。
最佳答案
我用 C++ 实现了一个开源 DDP 服务器库,用于处理协议(protocol)细节。它应该与一些现有的websocket库一起使用,例如mongoose、websocketpp、libwebsockets等。
所以例如从 MeteorJs 站点调用 C++ 方法如下所示:
还支持从 C++ 获取实时数据。
更多信息和示例 - GitHub 上:
关于javascript - C语言的DDP服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063728/