首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于实时聊天应用的HTML5 Websockets?

用于实时聊天应用的HTML5 Websockets?
EN

Stack Overflow用户
提问于 2013-06-03 06:03:16
回答 5查看 10.7K关注 0票数 1

我们计划利用Websockets技术制作一个基于HTML5的聊天应用程序。

所以我的问题是:

  1. 是目前本地支持 Websockets 的浏览器?
  2. 如果浏览器不支持它,那么什么是可能的优雅退步呢?
  3. 有一个可以帮助的多填充吗?

致以敬意,

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-03 15:02:00

到目前为止,哪些浏览器以本地方式支持Websockets?

正如以前的答复所指出的那样。

请参见:

如果浏览器不支持它,什么是可能的优雅退步?

如果您的实时web服务器只支持WebSockets,那么接下来的最佳选择是使用网络套接字-js,它是一个基于Flash的填充,它创建了一个与原始WebSocket对象相同的与之交互的WebSocket对象。

其他备份--需要由实时web服务器支持并由它提供的客户端库管理的--被排序为最糟糕的:

  1. EventSource -来自服务器->客户端的单个流连接。可以使用第二个HTTP请求实现双向通信。
  2. HTTP流-使用两个连接来模拟双向连接。消息在持久的“流”连接服务器->客户端上被“推送”
  3. HTTP长轮询也使用两个连接。但是,服务器->客户端将被打开,直到新消息可用或超时为止。然后关闭它,如果设置了任何数据,它将在响应中传递。
  4. 标准HTTP轮询-由于大量潜在的浪费请求,效率要低得多。但是,如果应用程序提供的更新不那么频繁,而且在轮询请求之间的数据“过时”也不重要,那么这可能是一个可以接受的解决方案。这里没有“推”。

选项1和2可以通过多种不同的方式实现,具体取决于web浏览器。这就是他们的“黑客”。我们现在有了用于双向通信的WebSocket和EventSource (服务器发送事件),这非常类似于HTTP流,它的额外好处是支持自动重连接。

有能帮上忙的多填物吗?

是的,参见前面提到的网络套接字-js

对于PHP来说,最好的选择是棘轮。它不是在Apache中运行的,所以它没有受到相同的限制--它构建时没有考虑到请求/响应范式。

我现在看到的最常用的解决方案是:

对于其他选项--包括推手之类的托管服务(我在撰写本文时为其工作)--请看一下我正在维护的这个实时网络技术指南 (并接受对它的贡献)。

票数 12
EN

Stack Overflow用户

发布于 2013-06-03 06:32:53

正如NullPoiиteя和Orangepill所指出的,您可以查看html5please和и。所以这就是你的第一点

您的第二点和第三点更适合作为后备选项。你可以用投票。(有关更多信息,请参见此回答 )。

这不是你的问题,而是你应该考虑的一点(因为你把它标记在php下)。只要用户处于活动状态,Websockets就有活动连接。PHP不是这样做的,您的服务器将被淹没在连接中,而且一个意义不佳的人也可以很容易地确保服务器被淹没。

这是因为如果您想要它,您需要将超时限制设置为0(所以永远不要)。因此,您的服务器将堆叠这些请求,直到它满了为止。(我不知道它是如何起连接作用的)。

如果您不想使用websockets和PHP,那么您应该看看推手。我用这个服务来做我自己的聊天。它像魔法一样运作,把所有困难的东西都从你身上拿走。

我希望这些信息能帮助你开发一个应用程序。

票数 1
EN

Stack Overflow用户

发布于 2013-06-04 03:23:39

Faye是令人惊奇的,我喜欢Pusher,但是我想要一些免费和容易实现的东西,我可以在我自己的服务器上管理。在开始学习Node.js之后,我对Faye印象深刻。它为websockets提供了很好的支持,http,但我喜欢您可以使用Bayeux协议。

http://faye.jcoglan.com/node.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16890796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档