1

对于我正在规划的站点,我需要服务器能够向登录用户的浏览器发送命令。

简单示例:当呼叫中心代表接到电话时,我想自动拉起正在打电话的潜在客户。

我已经整理了其余的技术,我需要勾勒出与浏览器的实际通信将如何工作的草图。

从我目前的研究来看,这通常是通过桌面软件或插件完成的,但在这一点上感觉很老套。我知道它可以用 javascript 来完成,或者通过编写一些不断轮询服务器以获取命令的东西(这可能有效,但感觉有点浪费和蛮力-y),或者通过一些其他技术给服务器一种调用方式出给客户。

类似于 stackoverflow 用来告诉您当前问题的新答案已经到达的任何机制之类的东西可能会起作用。

那么有没有已知的最佳实践?什么对你有用?

4

5 回答 5

3

正如其他答案所暗示的那样,WebSockets 和长轮询对您来说可能是一个很好的答案。但也一定要调查支持后端(非浏览器,系统的大铁部分)所需的 sw。如果每个浏览器都需要一个始终打开的文件描述符,那可以加起来。-- 有一些方法可以添加对更多文件描述符的支持,但请确定这是否是您想要采取的方式。

从整个系统的角度来看,设置轮询系统可能(或可能不会)更容易。轮询服务器并没有什么问题,尤其是专门的低开销,“我现在什么都没有给你”类型的服务器。

请记住,您希望您的解决方案是健壮的。它应该能够顺利处理客户端断开连接、重新启动、间歇性网络故障等。

记得测试以上所有内容......

于 2011-10-02T21:56:06.843 回答
2

我相信这就是新的 web sockets html 5 标准试图创建的,打开服务器和客户端之间的连接以允许双向通信。但在该标准生效之前,我目前不知道除了投票之外的任何其他方式。

于 2011-10-02T21:33:34.520 回答
2

服务器通常不能调用客户端。为了做到这一点,必须在客户端安装一个服务器软件来监听和响应。如果是网络浏览器,则没有这样的事情。所以你唯一能做的就是轮询服务器并检查你是否有新的东西。

编辑:

我做了一个小测试,看看 stackoverflow 是如何工作的。我的结论是使用以下系统进行定期轮询。当您想添加答案时,会向服务器发送一个发布请求,可能会启动一个计数器。之后每隔一段时间,请求被发送到 /posts/ID/editor-heartbeat/edit 发送草稿(您在此之前输入的内容),并且响应是一个包含您请求的成功状态和消息数量的 josn在那之前发布的那个。如果该数字不是 0,则会显示条形以提醒您。

于 2011-10-02T21:33:57.880 回答
1

Websockets是你想要的。

于 2011-10-02T21:32:15.290 回答
1

执行此操作的传统方法是使用来自客户端的定期 XHRequest,询问“您有新消息要给我吗?”

还有一些更奇特的方法,包括不关闭 TCP 连接和/或 iframe;如果你有兴趣,你可以谷歌了解 GMail 是如何做到的。

Websockets 是一项相当新的技术,仅在绝对最新的浏览器上实现,尽管我可能会冒险。

于 2011-10-02T21:40:00.913 回答