我正处于使用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浏览器)
谢谢你的支持
答案 0 :(得分:11)
如果实施longpolling,为什么要使用signalR?
答案:支持旧版浏览器或对数据传输实现细节进行更高级别的抽象。如果你肯定会使用支持websockets的chrome版本 - 使用websockets(很好的解释here)。
不是很糟糕吗?
答案:实际上它并不是最好的(参见上面的链接),但对于旧浏览器来说总比没有好。
websockets和longpolling完全不同?
答案:它们完全不同(再次见上面的答案),但它们有共同点(它们都需要连接)。
只有IIS8支持websockets?
答案:如果你想使用纯.NET框架 - 是的,只有IIS 8和.NET 4.5。但您可以使用其他websockets服务器(请参阅下面的解决方法)。
我可以使用Html5 websockets将聊天数据保存到SQL数据库吗?
答案:websockets只是一个发送数据的协议,所以使用它除了传输数据外,你不能执行任何操作。但是,您可以使用将要发送到服务器的令牌,这意味着“将所有以前的数据保存到数据库”。或者,您可以根据socket.io for node.js中填写的不同类型的消息制作更复杂的方案。
没有解决办法让websockets在IIS7及更高版本上运行(我将只使用Chrome浏览器)
答案 - 是的,只是不要使用IIS,但是另一个websockets服务器实现(例如Fleck - 对支持webseckets的“旧”浏览器有很好的支持),并将其作为一个单独的进程与IIS一起运行。 / p>
答案 1 :(得分:7)
如果IIS和您的浏览器支持,则SignalR可以支持websockets,如果不是,则使用longpolling。 使用SignalR可以节省大量时间重新发明轮子,他们已经证明你可以用它创建一个很好的聊天网站。
答案 2 :(得分:0)
答案 3 :(得分:-3)
<强> 4。只有IIS8支持websockets?
SignalR支持IE&lt; 8与Json2.js。只需使用Nuget install-package json2
即可确保在信号R.js之前添加对json2.js的引用