Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 所以ASP.NET MVC和WebSocket?_C#_Asp.net Mvc 3_Iis_Websocket_Comet - Fatal编程技术网

C# 所以ASP.NET MVC和WebSocket?

C# 所以ASP.NET MVC和WebSocket?,c#,asp.net-mvc-3,iis,websocket,comet,C#,Asp.net Mvc 3,Iis,Websocket,Comet,我在MVC 3中有一个应用程序,我希望向它添加WebSocket(带有Comet的回退功能) 我做了一些研究,发现彗星部分非常简单,我更愿意自己做。处理这些长期存在的ajax请求只需要异步控制器和一点简单的js 现在,在WebSocket的例子中,事情开始变得肮脏。我看了一些库,但它们大多似乎设置了自己的web服务器(因此需要另一台主机或端口),并在那里侦听ws-protocol请求。例如,这是一个例子,一开始看起来不错,但有一个“我是一个web服务器”的问题(这当然很好,但我宁愿避免) 然后我

我在MVC 3中有一个应用程序,我希望向它添加WebSocket(带有Comet的回退功能)

我做了一些研究,发现彗星部分非常简单,我更愿意自己做。处理这些长期存在的ajax请求只需要异步控制器和一点简单的js

现在,在WebSocket的例子中,事情开始变得肮脏。我看了一些库,但它们大多似乎设置了自己的web服务器(因此需要另一台主机或端口),并在那里侦听ws-protocol请求。例如,这是一个例子,一开始看起来不错,但有一个“我是一个web服务器”的问题(这当然很好,但我宁愿避免)

然后我看了“PingIt”之类的东西,我现在找不到链接了,不过我在另一台计算机上有这个源代码。这一个确实在mvc中的端点上运行,但我不太喜欢它处理事情的方式,比如它接受IDisposable对象,并通过reflector创建一个javascript片段,该片段在客户端中呈现,这与它们的库名称非常不符,我对此并不感兴趣,另外,我觉得很多内容都与我可能希望的内容背道而驰,这与我对页面应该如何呈现的看法背道而驰(特别是现在我正在使用MVC,这意味着我可以编写干净、不引人注目的html页面)

基本上,我希望我的端点是:

domain.com/rt/comet
domain.com/rt/socket

而不是

domain.com/rt/comet
domain.com:81/

那么:是否可以在asp.net MVC应用程序控制器中的端点上接收websocket连接(并进行握手和任何需要进行的操作),而不是在某处设置tcplistener

这也将帮助我使comet代码与websocket代码更接近

我应该说,我对comet/websockets这件事是非常陌生的,所以我对这个协议不太了解,我确实了解如何让comet工作,但对websockets不太了解,尽管我已经阅读并理解了一些基本知识来了解它的要点


另外:请让我知道我所问的是否太离题了,我只是想同意这些评论,并提供一些链接。信号员就是要走的路

网址:及

守则:

Nuget:
安装软件包Microsoft.AspNet.signal-pre

良好的起点:

  • 免费电子书

其中一位创作者的视频: 我做了一些研究,发现彗星部分非常简单,我更愿意自己做。处理这些长期存在的ajax请求只需要异步控制器和一点简单的js

对不起,没那么容易。不同的浏览器以不同的方式运行,并使用不同的技术(XMLHttpRequest、XDomainRequest、ActiveX对象、多部分替换、长轮询、流式处理)执行得更好。正因为如此,而且这些解决方案没有定义规范。服务器发送事件(EventSource API)和WebSocket的设计从一开始就提供了将数据从服务器推送到客户端的最高效和标准化的方式,更重要的是WebSocket的设计用于客户端和服务器之间的实时双向通信

现在,在WebSocket的例子中,事情开始变得肮脏。我看了一些库,但它们大多似乎设置了自己的web服务器(因此需要另一台主机或端口),并在那里侦听ws-protocol请求。例如,SuperWebSocket就是这样,一开始看起来不错,但有一个“我是一个web服务器”的问题(这当然很好,但我宁愿避免)

Windows Server 8将本机支持WebSocket。在此之前,您需要使用单独的“web服务器”,如或SuperWebSockets(您已经引用过)。还有和

但是,由于微软正在向前推进,它很可能会得到全面的支持,甚至成为标准ASP.NET MVC堆栈的一部分(可能已经计划好了,我对微软的东西有点落后)。Signal具有WebSocket支持(或模块),并将处理支持用户浏览器的传输机制的回退

有关自托管解决方案的更多信息(还有一些.NET/IIS选项),请查看这些


我非常感兴趣的是,在处理数千个持久连接时,IIS是如何扩展的——它是为Windows Server 8重新编写的吗?需要多久才能引入负载平衡器和横向扩展?如果这不是您感兴趣担心的问题,那么我会将。该API旨在通过单个TCP套接字在浏览器和服务器之间提供双向通信通道。它已经被IETF标准化,最新的Chrome、Firefox、IE和Opera浏览器都支持WebSocket。它旨在通过减少HTTP消息开销来最小化带宽开销。那么,有什么不喜欢的呢

就像任何被感知到的银弹一样,事情并不总是看起来的那样。存在许多问题:

浏览器支持:截至2012年6月,目前使用的浏览器中只有47.64%支持WebSocket,这意味着,无论WebSocket看起来有多好,您仍然需要第二个“后备”解决方案来支持大多数Internet用户。而且,由于大多数“后备”解决方案都涉及闪存,所以在iOS和其他移动设备上,您仍然运气不佳

从以下博客文章中了解更多关于WebSocket的真实信息:

浏览器支持更新:自5月起