(轻量级)Instant Messenger:C#.Mono,node.js还是其他?

Spa*_*mer 1 c# mono instant-messaging node.js

我应该使用哪种编程语言编写Instant Messenger?以下是目标:

  • 应该能够处理许多用户(至少为了概念验证)
  • 协议应该基于json或者二进制数据.我想json更容易实现和扩展.由于开销,我不想使用XML.我知道这不是太多的数据,但它应该尽可能快,特别是在慢速网络(例如移动)上.
  • 用户应该能够同时登录多个设备
  • 历史记录应保存在服务器端,以便可以在所有设备上查看
  • 服务器应该让很多空闲客户端活着
  • 文件传输(不太确定如何实现,可能是一个不同的网络套接字,因此它不会阻止客户端的聊天消息)
  • MySQL认证

(不,XMPP不是一个选项).

我是一名具有良好PHP经验的Web开发人员,但这不是该项目的选项.我也有使用Javascript(主要用于网站)的经验,但我很容易使用node.js而且我对C#.Net几乎没有经验,也可以编写C#.Mono.我想写的服务器应该在Linux上运行.我没有使用Java的经验,但如果这是我学习它的最好方法.

我已经阅读了很多关于node.js的内容,并且它的I/O非常适合网络应用程序和Web服务器.但即时通讯呢?主要部分是保存消息并将其代理给其他房间参与者,因此它是"网络".

我还想到了C#,它提供了异步套接字,它与一个线程池afaik而不是一个事件队列一起工作.

我不确定哪个对IM服务器最有效.

如果有人能给我一个提示,那就太好了.我知道C++可能是最好的方式,但我不太喜欢那种语言,而且很难学习.

SLa*_*aks 5

您可以使用任何常规编程语言(C#,Java,C++等)完成所有这些操作,只要您足够熟练使用该语言即可.