我目前正在构建一个聊天服务器(meebo 风格)。
架构是这样的。
- Bitlbee在 libpurple在主机 B 上。它是数据中心上的一个普通服务器。
- 用户通过主机A 上的网络服务器(就像meebo)与bitlbee 通信。此 Web 服务器的后端维护聊天 session 。它只是将用户命令转换为正确的 bitlbee 命令并发送回主机 A。
这里最重要的部分是主机 A 将部署在嵌入式 Linux 中。
我有2个问题。
- 为了保持聊天 session 持续,我正在考虑使用 node.js .因为创建具有持久连接的实时应用程序要容易得多。但我怀疑它是否支持这样的平台。
- 如果我使用 C 而不是 node.js(我没有使用任何 Web 服务器),我可以通过 libirc 与主机 A 上的 irc 服务器通信。但是我如何在 C 中实现所有 Web 服务器功能(如 session 、url/cookie/post 数据解析等)?
此外,如果您认为我的方法有误或有更好的方法,请告诉我如何改进此架构?
注意:这不是高容量聊天服务器。
最佳答案
如果在嵌入式平台上构建 V8/Node.js 令人望而却步,那么下一个最好的办法就是采用 Node 的事件循环和平台层(libuv)和 HTTP 解析器(http-parser),它们都用C 并以此为起点。这些库与用于构建 Node.js 的库相同,因此它们经过实战测试,将为您提供所需的性能特征。
Ryan Dahl,Node.js 的作者,准确地演示了 how to use libuv and http-parser to build an asynchronous web server in C .
关于在嵌入式平台上聊天*服务器*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420743/