将Node.js+Socket.io封装到OSX可执行文件中的可靠方法?(或C/C++/Objective-C库作为替代

Reliable way to wrap Node.js+Socket.io into OSX executable? (or C/C++/Objective-C libraries to use as alternatives)

本文关键字:C++ Objective-C 方法 封装 io js+Socket Node OSX 可执行文件      更新时间:2023-10-16

我正在处理一个项目,该项目需要一个简单、轻量级的事件服务器(即在用Javascript实现的不同客户端应用程序之间传递事件的服务器)。起初,Node.js和Socket.io似乎是一个完美的解决方案,但所涉及的依赖项和配置的数量让它黯然失色(有关该项目的详细信息以及为什么配置是一个问题,请参阅下文)。是否有一些经过测试且可靠的方法可以将所有这些依赖项打包到一个无需额外配置即可运行的可执行文件中?如果没有,有什么好的C/C++Websockets库可以与Mongoose之类的东西结合起来创建一个独立的可执行文件吗?

项目详细信息

基本用例:

  • 主持人打开OSX机器上的服务器
  • 一组10-20名用户将他们的移动设备指向主持人机器上托管的网站
  • 在会议期间(约一小时)进行沟通

基本要求:

  • 简单设置:主持人不是开发人员,可能几乎没有技术专长。任何需要终端或篡改配置文件或包管理器的东西都是不可能的
  • 不可靠的配置:主持人的机器将在许多不同的上下文中由许多不同的用户使用。因此,系统不应该依赖于非常特定或原始的设置(即,希望避免需要设置特殊环境变量的具有大量依赖性的设置)
  • 性能和安全性不是问题:服务器将在短时间内与少量受信任用户一起在本地运行,因此安全性和高性能并不重要

有趣的问题。

我知道WebSocket社区中有一些C和/或C++WebSocket库正在开发中(在IETF讨论列表中提到),如果你想朝着这个方向发展的话。

你可能会感兴趣的是,Node.js的某些部分实际上是用javascript编写的,并在构建过程中作为内置模块进行编译,但除了破解构建之外,我不知道有什么方法可以为你自己的代码实现这一点。

由于这是OSX,你可以将Node与你自己的代码和任何模块一起打包,这些模块是在你的.app中根据静态v8库构建的。这将是一个相当紧密的耦合,尽管这不是你所要求的。

也可以将扩展(或其一部分)构建为Node和v8加载的C++模块。