8

我在使用 html5 websockets 或 signalR 进行聊天时陷入两难境地,我们将集成到我们的 asp.net mvc3 应用程序中

我的困境1.如果signalR实现了longpolling,
为什么要使用它? 2.长轮询不好吗? 3.websockets和longpolling完全不同? 4.只有IIS8支持websockets? 5.我可以使用 Html5 websockets 将聊天数据保存到 SQL 数据库中吗? 6.是否有让websockets在IIS7及更高版本上工作的解决方法(我将只使用chrome浏览器) 感谢您的支持





4

4 回答 4

11
  1. 如果 signalR 实现了长轮询,为什么要使用它?

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

  2. 长轮询不好吗?

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

  3. websockets和longpolling完全不同?

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

  4. 只有 IIS8 支持 websockets?

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

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

    答:websockets 只是一种发送数据的协议,所以从字面上看,除了传输数据之外您无法执行任何操作。但是,例如,您可以拥有一个将发送到服务器的令牌,这意味着“将所有以前的数据保存到数据库”。或者,您可以根据不同类型的消息(例如在socket.io 中为 node.js 实现)来处理更复杂的场景。

  6. 是否有一种解决方法可以使 websockets 在 IIS7 和更高版本上工作(我将只使用 chrome 浏览器)

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

于 2013-08-12T11:33:09.970 回答
7

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

于 2012-02-16T08:41:18.860 回答
0

在此处输入图像描述

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

于 2017-08-23T10:26:05.903 回答
-3

4. 只有IIS8支持websockets?

SignalR 支持 IE < 8 和 Json2.js。只需使用 Nuget install-package json2 即可

确保在 signalR.js 之前添加对 json2.js 的引用

于 2012-02-17T17:36:03.883 回答