我们正在开发C语言的DDP服务器(不要问为什么-我们只需要这样做)。我们注意到,Meteor将SockJS用于其DDP协议实现。虽然有一些库可以让我用C语言进行Web套接字,但我还没有找到任何C语言的SockJS库。

SockJS库似乎非常庞大,并且由于没有关于其运行方式的规范,因此听起来像是一种非常脆弱的方法来尝试反向工程其技巧。

这让我想知道让我们支持DDP的最佳策略是什么。我能想到的选择很少:


我可以导入V8引擎,并使用它在C ++和JavaScript实现之间架桥(然后我可以相对容易地将其公开给C)
我可以将SockJS库X用于语言Y,并使用Python / C / JNI / ...与之交互
也许我可以强迫Meteor仅使用Web套接字(DDP文档似乎暗示这是可能的,但我不知道怎么做)。


选项3(如果有可能)将是最少的工作,但是它将继承WebSockets的问题(浏览器互操作性,公司防火墙等)。

选项1和2是可行的,但是我必须包括的库的大小与我将要使用的功能不成比例。

考虑到上述情况,似乎没有一个完美的解决方案。但是,我想验证上述选择的可行性,并且知道我是否错过了什么。另外,如果以前有人尝试过,我很想听听。

最佳答案

我用C ++实现了一个开放源代码DDP服务器库,该库处理协议详细信息。它应该与一些现有的websocket库一起使用,例如mongoose,websocketpp,libwebsockets等。

所以例如从MeteorJs站点调用C ++方法看起来像这样:

javascript - C中的DDP服务器-LMLPHP

还支持从C ++获取实时数据。

更多信息和示例-在GitHub上:


https://github.com/andrei-markeev/ddpserver

10-08 08:47