Node.Js+;Socket.IO vs信号器vs C#WebSocket服务器

Node.Js+;Socket.IO vs信号器vs C#WebSocket服务器,c#,asp.net,node.js,websocket,signalr,C#,Asp.net,Node.js,Websocket,Signalr,我目前有一个用.Net编写的TCP服务器应用程序,它接收并向客户端提交消息。我正在考虑构建一个web应用程序,因此需要通信层 我已经构建了一个Node.JS+Socket.IO应用程序,它连接到我的TCP服务器,然后将通信推送到web应用程序,一切正常 我刚刚读过关于signar的文章,它是将其保留在.Net堆栈中的一种替代方法 然而,我也发现我可以编写一个C#Websocket服务器,一个基本的演示 我假设这个基本服务器就是Signal,但显然它有更多的功能 我试图决定的是,我是将当前的TCP

我目前有一个用.Net编写的TCP服务器应用程序,它接收并向客户端提交消息。我正在考虑构建一个web应用程序,因此需要通信层

我已经构建了一个Node.JS+Socket.IO应用程序,它连接到我的TCP服务器,然后将通信推送到web应用程序,一切正常

我刚刚读过关于signar的文章,它是将其保留在.Net堆栈中的一种替代方法

然而,我也发现我可以编写一个C#Websocket服务器,一个基本的演示

我假设这个基本服务器就是Signal,但显然它有更多的功能


我试图决定的是,我是将当前的TCP应用程序附加到Websocket服务器上,还是使用单独的信号器或Node.js路由?出于兴趣,Signal应用程序是如何运行的,它是作为Windows服务、控制台应用程序还是IIS服务运行的?

开发可扩展/线程安全的TCP服务器可能不是一件容易的任务。另一方面,互联网上有很多很好的资源,可以让你自己创业。例如,如果你正在寻找一些不错的开源WebSocket项目,我的建议是

:开源C#WebSocket库

:开源C#WebSocket库

SignalR可能很不错,但它需要WindowsServer8/IIS8才能提供WebSocket功能


在商业产品方面,特别是考虑到websocket功能并非在所有浏览器上都可用,我建议使用PokeIn websocket和reverse Ajax库。从版本2.0开始,它有内置的WebSocket服务器。信号器提供的详细信息类似于Socket.IO,因为它支持传输协商/回退。它是一个框架,而不是服务器,因此您需要将其托管在某种服务器上。我们有用于ASP.NET、OWIN(例如Kayak)和self-host的主机,因此您可以轻松地在自己的进程中运行它,例如Windows服务

SignalR支持浏览器(JS)、.NET、WindowsPhone7和Silverlight的客户端。还有iOS、Mono Touch等客户机

Signal将为您提供比原始套接字更高级别的API,这是它的一大优势,允许您以广播(或定向)方式从服务器到客户端执行“RPC”之类的操作。

其他含义 我使用了这两种技术,并在.NET/节点堆栈的两侧工作

  • 虽然我现在更喜欢节点端,但如果您只在.NET中工作,那么signar显然是一个不错的选择。相反,如果您在node中构建所有项目,我将使用socket.io或。如果您的范围足够窄,不需要担心回退之类的问题,我建议您检查模块,因为它对您的依赖关系更简单、更轻松。过去,SoCKE.IO一直是Windows上的一个问题,因为安装了节点GYP无法安装本地依赖关系(需要很多配置步骤,这取决于Windows的版本,但对于C++本地构建的模块是必需的)。strong>更新多亏了您的支持,此Windows位不再那么重要
  • 如果您有一个负载平衡器并且计划运行SignalR,则需要将SQL或Redis设置为背板以绕过负载平衡器。您将在socket.io端处理类似的问题,并且有[多个受支持的方法][1](其中1个也是redis)

  • 更新-删除了jquery信息,因为它不再适用于信息

    ,您也可以尝试SuperWebSocket。现在,我只是直接编写了一个WebSocket服务器。只有两个关键协议在使用中(其余的几乎是相同的变体),因此它并不庞大。我正在等待.NET4.5/win8,其中包括WebSocket服务器支持OOTB。@MarcGravel谢谢。下面是一篇展示.Net 4.5 Websocket服务器的帖子,我不确定服务器是如何运行的。别忘了socket.io不仅仅是Websocket,它还可以回退到长轮询,等等。一年后@MarcGravel。(在体验了vs2012 signalR和node之后)您更喜欢哪一种?@Royi我会间接回答:我们仍然是我们的自定义套接字服务器,并计划发布代码,正如前面提到的F/OSSAd,signalR有传输回退,因此如果不支持web套接字(在服务器或客户端上)它属于其他传输类型,因此..需要Windows Server 2012的不是Signal,所以这不是它的错。实际上,Signal JavaScript客户端库2.2.0(2015年1月发布)支持jQuery>=1.6.4的任何版本。i、 e.您不必复制jQuery的版本(无论如何都会中断)。我刚刚用运行在Chrome、IE和Firefox上的示例聊天应用程序验证了这一点,该应用程序使用的是SignalrJavaScript客户端版本2.2.0和jQuery2.1.4。另外,大多数浏览器很可能缓存了jQuery的兼容副本。对于那些不知道的人,SignalR现在是Azure提供的一项服务,由Azure为您管理它的可伸缩性方面。他们也有一个免费的游戏层。