聊天*服务器*在embedded式平台上

我目前正在build立一个聊天服务器(meebo风格)。

架构是这样的。

  1. BitLbee over libpurple在主机B上 。 它是一个数据中心平凡的服务器。
  2. 用户通过主机A上的web服务器(如meebo)与bitlbee进行通信。 该Web服务器的后端维护聊天会话。 它只是将用户命令转换为适当的bitlbee文件并发送回主机A.

这里最重要的部分是主机A将被部署在embedded式Linux中。

我有2个问题

  1. 为了保持聊天会话的持久性,我正在考虑使用node.js。 由于使用持续连接创build实时应用程序要容易得多。 但是我怀疑它是否支持这样的平台。
  2. 如果我使用C而不是node.js(我没有使用任何Web服务器),我可以通过libirc与主机A的irc服务器通信 。 但是,我如何实现C中的所有Web服务器function(如会话,URL / cookie / post数据parsing等)?

另外,如果你认为我的方法是错误的或有更好的方法,请告诉我如何改善这种架构?

注意:这不是一个高容量的聊天服务器。

如果在embedded式平台上构buildV8 / Node.js是禁止的,那么最好的方法是将Node的事件循环和平台层( libuv )和HTTPparsing器( httpparsing器 )都写入C中,并使用它们作为一个起点。 这些是用来构buildNode.js的相同的库,所以它们经过了战斗testing,并会给你你所寻求的性能特征。

Node.js的作者Ryan Dahl演示了如何使用libuv和http-parser在C中构buildasynchronousWeb服务器 。

在Bitlbee和基于Web的IRC客户端之间放置一个ZNC服务器。 Bitlbee会认为用户从未注销过,ZNC可以维持消息积压,直到用户再次与Web客户端连接。

我会尝试去与node.js如果这是你的select,也是什么embedded式系统呢? 因为知道这将有助于更多。 此外,node.js的另外一个优点是,它确实已经build立了会话处理,但是如果你想在C语言中尝试,看看你是否能够在embedded式设备上运行一个sqlite wrapper来存储会话信息。

但是,如果可能的话,坚持在embedded式设备上做更less的工作,感觉很糟糕重新发明了很多东西,或者不得不摆弄你的设备的编译问题。