繁体   English   中英

Javascript服务器端事件

[英]Javascript Server-side Events

我正在寻找使不同计算机上的多个用户进行交互的最快方法,并且我认为这是通过使用服务器作为通信促进者来进行的。 因此,用户A和用户B都创建了到某种服务器的套接字连接,并且每当用户A做某事时,它都会向服务器发送消息,然后服务器向用户B发送消息。

下一部分是我要在javascript中尝试做的事情。 我已经使用XMLSocket在Flash中完成了此操作,因此javascript中是否具有等效功能?

PS:我在这里找到了EventSource(): http : //dev.w3.org/html5/eventsource/ ,但我不确定它是否已由浏览器实现。

编辑:理想情况下,它将用于需要实时事件的聊天应用程序,因此每隔X秒使用ajax调用将太慢。 为什么W3C尚未添加这样的HTML 5对象,因为它似乎非常有用。

这里的情况有所改变。

看截图:

替代文字

除IE之外的所有主要浏览器 (包括Firefox, Webkit (即Chrome加上桌面/移动Safari)和Opera)都可以实现 服务器端推送的HTML5实现。

对于iPhone / iPad / Android Web应用程序开发人员来说,这是个好消息,但对于世界其他地区而言,并不是那么重要,因为世界上仍在为IE6-8的较差的Web标准实施和Firefox追赶而苦苦挣扎。

当前的情况是,如果您需要跨浏览器支持,那么Dan所描述的Comet服务器 (或反复进行iFrame / xmlhttp轮询)仍然是您的最佳选择。

您可能需要研究Comet(反向Ajax)以生成服务器发送的事件。 据我所知,没有浏览器实现EventSource()

阿贾克斯人还发表了一篇关于彗星的好文章,其中包括GTalk之类的例子。

该选项被认为是“错误的”,因为它会使与服务器的连接不断打开,这会增加负载。

您可以考虑通过每X秒发出一个Ajax请求来检查更新。 正如我在Ajaxian文章中提到的那样,37Signals每3秒轮询一次实时聊天,这似乎对他们“足够好”。

一种方法是使用flash-javascript套接字桥。 有几种实现。 我用过这个 非常快! 这样做的另一个好处是,您无需更改服务器即可使其工作。

Flash-JavaScript? Java-JavaScript(即LiveConnect)如何。 我现在正在创建一个页面,在这里我使用一个隐藏的Java小程序(宽度和高度1像素,与背景颜色相同)完全控制所有良好的底层套接字通信,并从该小程序调用JavaScript函数在有新数据可用时对网页DOM / HTML进行更新。 Java SDK是免费的。 Flash SDK不是,上次我尝试找到将其下载到哪里。

好吧,你有ajax。 那不会保持开放的连接(保持连接除外,但是js无法像套接字一样使用它们)。 您从A向服务器发送XML编码的消息,B定期轮询服务器以获取消息。 服务器必须为每个客户端保留一个收件箱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM