用于asp.net MVC聊天应用程序的signalR vs html5 websockets

时间:2012-02-16 08:14:30

标签: asp.net-mvc-3 html5 signalr

我正处于使用html5 websockets或signalR进行聊天的困境,我们将整合到我们的asp.net mvc3应用程序中

我的困境
1.为什么要使用 signalR ,如果它实现了longpolling?
2.Innt longpolling bad?
3.websockets和longpolling完全不同?
4. 只有IIS8支持websockets?
5.我可以使用Html5 websockets将聊天数据保存到SQL数据库中吗? 6.Isnt有一个解决方法,使websockets在IIS7及更高版本上运行(我将只使用chrome浏览器)
谢谢你的支持

4 个答案:

答案 0 :(得分:11)

  1. 如果实施longpolling,为什么要使用signalR?

    答案:支持旧版浏览器或对数据传输实现细节进行更高级别的抽象。如果你肯定会使用支持websockets的chrome版本 - 使用websockets(很好的解释here)。

  2. 不是很糟糕吗?

    答案:实际上它并不是最好的(参见上面的链接),但对于旧浏览器来说总比没有好。

  3. websockets和longpolling完全不同?

    答案:它们完全不同(再次见上面的答案),但它们有共同点(它们都需要连接)。

  4. 只有IIS8支持websockets?

    答案:如果你想使用纯.NET框架 - 是的,只有IIS 8和.NET 4.5。但您可以使用其他websockets服务器(请参阅下面的解决方法)。

  5. 我可以使用Html5 websockets将聊天数据保存到SQL数据库吗?

    答案:websockets只是一个发送数据的协议,所以使用它除了传输数据外,你不能执行任何操作。但是,您可以使用将要发送到服务器的令牌,这意味着“将所有以前的数据保存到数据库”。或者,您可以根据socket.io for node.js中填写的不同类型的消息制作更复杂的方案。

  6. 没有解决办法让websockets在IIS7及更高版本上运行(我将只使用Chrome浏览器)

    答案 - 是的,只是不要使用IIS,但是另一个websockets服务器实现(例如Fleck - 对支持webseckets的“旧”浏览器有很好的支持),并将其作为一个单独的进程与IIS一起运行。 / p>

答案 1 :(得分:7)

如果IIS和您的浏览器支持,则SignalR可以支持websockets,如果不是,则使用longpolling。 使用SignalR可以节省大量时间重新发明轮子,他们已经证明你可以用它创建一个很好的聊天网站。

答案 2 :(得分:0)

enter image description here

希望它能解决您的所有问题。

答案 3 :(得分:-3)

<强> 4。只有IIS8支持websockets?

SignalR支持IE&lt; 8与Json2.js。只需使用Nuget install-package json2

即可

确保在信号R.js之前添加对json2.js的引用