在嵌入式平台上聊天*服务器*

时间:2012-07-10 19:44:45

标签: c node.js embedded chat libpurple

我目前正在构建聊天服务器(meebo样式)。

架构是这样的。

    {li> Bitlbee超过libpurple位于主机 B 上。它是数据中心的一个简单服务器。
  1. 用户通过主机 A 上的网络服务器(就像meebo)与bitlbee进行通信。此Web服务器的后端维护聊天会话。它只是将用户命令转换为正确的bitlbee comamnd并发送回主机 A
  2. 这里最重要的部分是主机 A 将部署在嵌入式Linux中。

    我有 2个问题

    1. 为了保持聊天会话的持久性,我正在考虑使用。因为使用持久连接创建实时应用程序要容易得多。但我怀疑它是否支持这样的平台。
    2. 如果我使用C代替node.js(我没有使用任何Web服务器),我可以通过 libirc 与主机 A 的irc服务器通信。但是如何在C中实现所有Web服务器功能(如会话,url / cookie / post数据解析等)?
    3. 另外,如果您认为我的方法有问题或有更好的方法,请告诉我如何改进此架构?

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

3 个答案:

答案 0 :(得分:2)

如果在嵌入式平台上构建V8 / Node.js是禁止的,那么接下来最好的方法是采用Node的事件循环和平台层(libuv)和HTTP解析器(http-parser) ,都用C语言编写,并以此为出发点。这些是用于构建Node.js的相同库,因此它们经过了战斗测试,可以为您提供所寻求的性能特征。

Node.js的作者Ryan Dahl正好展示了how to use libuv and http-parser to build an asynchronous web server in C

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我会尝试使用node.js,如果这是您的选择,那么嵌入式系统是什么?知道这将有助于更多。另外,node.js的另一个优点是它确实有内置的会话处理,但是如果你想在C中执行它,请查看是否可以在嵌入式设备上运行sqlite包装器来存储会话信息。

但是,如果可能坚持使用嵌入式设备上的工作量较少的东西,那么重新制作很多东西或者不得不为设备编译问题感觉不好。