【问题标题】:signalR vs html5 websockets for asp.net MVC chat application用于asp.net MVC聊天应用程序的signalR vs html5 websockets
【发布时间】:2012-02-16 08:14:29
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:
    1. 如果signalR实现了长轮询,为什么还要使用它?

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

    2. 长轮询不好吗?

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

    3. websockets 和 longpolling 完全不同?

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

    4. 只有 IIS8 支持 websockets?

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 很好,它们支持 websockets..但是大多数情况下 IIS 和浏览器似乎不适合 websockets,所以大多数情况下它将是 longpolling...
      • 所以在大多数情况下没有长时间轮询而不是有一种解决方法可以使 websockets 仅在所有 IIS 和 chrome 上工作......?是的,我在这里看到了演示网络聊天jabbr.net/#/rooms/Lobby
      • 我认为没有一种解决方法可以让 websockets 工作。 iis8 发布后,对 websockets 的支持将迅速增长。
      【解决方案3】:

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

      【讨论】:

      • 不错,但需要文字而不是图片
      【解决方案4】:

      4.只有 IIS8 支持 websockets?

      SignalR 支持带有 Json2.js 的 IE install-package json2

      即可

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

      【讨论】:

      • IIS8是服务器,IE8是浏览器
      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 2014-07-08
      • 2016-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      相关资源
      最近更新 更多