.NET的WebSocket开发包比较

本文出现在第三方产品评论部分中。在这一部分的文章只提供给会员,不允许工具供应商用来以任何方式和形式来促销或宣传产品。请会员报告任何垃圾信息或广告。

Web项目常常需要将数据尽可能快地推送给客户,必要时无需等待客户端请求。对于与用户之间进行实时通信的网站,例如在线交流或文档协作工具,或者在长期运行的计算/执行任务的服务器上更新系统状态,等等这些时候,采用双向沟通机制是理想的。

以前,这类问题一般使用下面的解决方案:

使用 Flash 中的 Socket 连接(http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html)

Ajax 长轮询(https://gist.github.com/jasdeepkhalsa/4353139)

服务器发送事件... (http://en.wikipedia.org/wiki/Server-sent_events)

...或者就用 IE 中经典的 Frame 技术(http://cometdaily.com/2007/11/05/the-forever-frame-technique/)

但现在我们有了更好的选择:WebSocket。它的标准在2011年发布,在现代浏览器上已实施了一段时间。它更好的原因是使用更安全和更成熟的协议,带来了改进和升级。

略注:

这份比较是几个月前做的,可能不够及时,但如果有人要找好的WebSocket库,我认为这对他仍然是有用的。

本比较只针对以 NuGet 包形式发布的库, SuperWebSocket 虽然使用 NuGet 的 repository,但需要从网页中下载。

也许等我抽出空来,我会使用新的库或已测试的库的新版本进行比较然后更新这篇文章。

Fleck

https://github.com/statianzo/Fleck

我发现这个库真的是简单易用,对于库、文档、例子等都是,只要添加库,复制几行例子里的代码,然后运行——就这么简单。

但是简单是有代价的:其功能并不强大,且可配置的地方太少。

private static void Main(string[] args)
{
     var server = new WebSocketServer("ws://localhost:8181");
     server.Start(socket =>
     {
          socket.OnOpen = () => OnOpen(socket);
          socket.OnClose = () => OnClose(socket);
          socket.OnMessage = m => OnMessage(socket, m);
     });
}

对于简单快速的项目我会用它,如果你不需要用WebSocket发送太复杂的数据结构、命令一样的消息、或在客户端无WebSocket支持时的备选方式,这就是你要的了。

优点:

简单

无依赖项

缺点:

可配置项少

客户端浏览器不支持WebSocket时就没戏了

SignalR

http://www.asp.net/signalr

微软出品是我认为这个库最大的优点了。它已经和现有的ASP.NET框架做了集成,对服务器端和客户端代码都做了很好的抽象类, 这意味着你不需要太深入了解协议的东西。然后它还可以很聪明地在客户端浏览器不支持WebSocket时自动使用别的通信机制。它还可以完成一些叫远程过程调用(RPC)的东西,从服务器到客户端。

开发包比较-websocket .net">

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索websocket
, 客户端
, 服务器
, socket
, signalr
, 浏览器
, websocket mqtt
, 简单
, nuget
, superwebsocket
, Websocket协议
, websocket协议详解
websocket实时聊天
websocket .net、asp.net websocket、websocket4net、websocket .net服务端、.net core websocket,以便于您获取更多的相关知识。

时间: 2024-12-10 07:48:23

.NET的WebSocket开发包比较的相关文章

Javascript开发包汇总

javascript Javascript开发包汇总 Permalink Javascript libraries roundup   Prototype Prototype is a JavaScript framework that aims to ease development of dynamic web applications. Homepage: http://prototype.conio.net Documentation:http://blogs.ebusiness-app

.NET下的流程图开发包介绍

这5个流程图开发包有如下特点: 对NET与VS的支持 可将流程图存为XML文件 不只是流程图开发,任何种类的图形设计器都可以开发 内置大量的数据结构算法 功能非常强大都是2D模型,不支持3D建型模 其中GoDiagram支持Winform与Aspnet(纯html与Jscript实理) Essential Diagram只是Essential的一部份,Essential还提供了大量的WinForm,Aspnet,WPF控件 这5个流程图开发包各在功能上没有高下之分,我个人比效喜欢lassalle

C++网络开发包ACE环境的配置与调试

ACE是个很有用的开放源代码的C++网络编程开发包,利用它比直接用API更有利于代码的健壮性,可移植性,并相对简单. 估计大家刚接触ACE时,都有一定难度,说不定就半途放弃了,这是我学ACE两天中的总结,基本上不成文,但我想研究到ACE的你一定会明白下文的意思. 我的系统环境是:Win2k pro(sp4).VC6.0 (sp5) 过一阵,我的主页上要开论坛,并设VC专区,欢迎大家上去交流 www.liufei.com 一.ACE官方主页:/www.cs.wustl.edu/~schmidt/A

介绍一个简单的GPS应用软件开发包

简介: 欢迎使用 GPSLIB,这是一个简单的软件开发包(SDK),你可以利用这个 GPSLIB 在自己的32位 Windows 应用程序中加入全球定位系统的支持. 本文附带的源代码压缩文件中包含有 GPSLIB 库的源代码和 Demo 程序.很多文件中都有详细的注释说明.为了保证可下载文件的体积尽量的小,压缩文件中不含任何二进制文件.请使用Visual C++ 5 以上的版本编译并生成 DLLs.控制面板程序和可执行文件. 特性: 可以在任何支持Windows DLLs调用的开发环境中使用,包

借助两个开发包在PL/SQL中实现多进程通信

PL/SQL是基于Oracle的一个主流应用程序编程语言,它的主要特点是将SQL语 句与过程化程序开发语言相结合,以实现更为复杂的商业逻辑.本文主要就其中 多进程通信进行讨论. 显然,多进程技术是用来提高应用的并发性,进而提高整个系统的执行效率, 那么如何在PL/SQL中实现多进程的通信呢?其实,PL/SQL其设计的初衷主要是增 强SQL语句的功能,而没有考虑到其他编程语言的高级功能,所以在PL/SQL中实现 多进程通信只能借助于Oracle提供的两个开发包:DBMS_PIPE和DBMS_ALE

短信猫JAVA二次开发包SMSLib,org.smslib.TimeoutException: No response from device解决方案

        最近在Linux环境下利用开源组件SMSLib,开发短信猫应用,经常遇到这个错误,发现网上也有很多朋友遇到过这个问题,现在将解决这个问题的方案分享给大家. 开发环境:             Linux ReadHat5.4   64位,内核:2.6.33.20 ,JDK1.6,SMSServer-3.5.2.jar 异常信息: 图1-1 解决方案: 遇到这个异常时,请检查以下二个方面: 1.是否启用轮循模式? 方式1).在jvm中,添加-Dsmslib.serial.polli

360独家发布安全补丁针对微软“DirectShow视频开发包”漏洞

⊙本报记者 李小兵 360安全中心5月31日独家首发临时安全补丁,以针对最新发现的微软"DirectShow视频开发包"漏洞.360表示,安装这一补丁,并打开360网页防火墙实时保护后,将获得相应"免疫"能力. 据悉,360安全中心通过恶意网页监控系统在5月21日发现了该漏洞,并在第一时间紧急通报给了微软公司.

安装python-devel开发包

1.概述 有时在安装某些软件的时候,会报错: Error: must have python development packages for 2.4, 2.5, 2.6 or 2.7. Could not find Python.h.Please install python2.4-devel, python2.5-devel, python2.6-devel or python2.7-devel 这是因为缺少python开发包的原因. 2.解决方案 如果你使用的是centOS系统,或者支持y

sdk-中控指纹SDK开发包中比对模板文件函数怎么用?第一个参数传递的是什么?

问题描述 中控指纹SDK开发包中比对模板文件函数怎么用?第一个参数传递的是什么? 源代码: CZKFPEngX::VerFingerFromFile(LPCTSTR regTemplateFile, LPCTSTR verTemplateFile, BOOL ADoLearning, BOOL* ARegFeatureChanged) { BOOL result; static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BOOL VTS_PBOOL; Invoke