TOGOUTECH

javascript - Safari 中是否可以使用 Http Streaming Comet?

coder 2024-05-16 原文

对于 HTTP Streaming Comet,我指的是“永远的 iframe”/“永远的 xhr”变体,它们在从服务器推送数据后不会关闭连接,这与关闭并重新发送请求的标准轮询和长轮询相反每个服务器推送事件的新请求。

我查看了 dojo.io.cometd 包,它们似乎只有轮询实现。我还找到了this example ,但即使经过相当多的修补,它似乎也无法在 webkit 中工作(我让它在其他任何地方都可以工作)。 This announcement from the safari blog似乎暗示 xhr 是可能的,但我找不到任何代码或文档,也无法让它工作。

有谁知道在 Webkit 浏览器(Safari 和 Chrome)中实现 HTTP streaming comet 的技术、脚本、库或演示?

更新

经过一些修改后,我发现需要做两件事才能通过 XHR 在 Safari 中使用 http 流:

  • 响应需要有一个 Content-Type:multipart/x-mixed-replace
  • 在浏览器开始持续显示更新之前,响应需要发送一些“噪音”字符。我假设这与填充一些内部缓冲区有关。

更新 2

我终于使用 iframe 技术让它在所有浏览器中工作。该解决方案需要注意的是,只有基于 WebKit 的浏览器才能接收 multipart/x-mixed-replace header 。

最佳答案

根据维基百科,HTTP Streaming comet 应该可以在每个浏览器中使用。 “没有框架的页面布局”,Ajax:权威指南。 O'Reilly Media,第 320 页。ISBN 0596528388 是此信息的引用引用,因此本书可能对如何执行此操作提供了建议。

还有 http://meteorserver.org/有一个我刚刚确认在 Chrome 中有效的演示,它是一个客户端库 + 一个将数据推送到客户端的服务器。

关于javascript - Safari 中是否可以使用 Http Streaming Comet?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169258/

有关javascript - Safari 中是否可以使用 Http Streaming Comet?的更多相关文章

  1. javascript - 使用 list.js 排序和搜索不起作用 - 2

    这是我第一次使用list.js,由于某些原因它无法正常工作。这是一个活生生的例子。http://hartslogmuseum.com/bookhjr10/test.php这是它应该做的http://listjs.com/examples这是我的代码。我只想搜索名称。<divclass="table-responsive"><divid="catalog"><inputclass="search"placeholder="Search"/><buttonclass="sort

  2. javascript - 为什么 JSON.Parse 说 "invalid character"? - 2

    我有一段在IE中运行的JS,其中包含以下行:vardata=JSON.parse("{skill:'SK_AUTO_DEV_TEST',kind:'IS_REQUIRED'}");谁能告诉我这是怎么回事? 最佳答案 因为这不是有效的JSON–您需要在属性名称周围加上引号。JSON.parse('{"skill":"SK_AUTO_DEV_TEST","kind":"IS_REQUIRED"}'); 关于jav

  3. javascript - 文件下载不适用于 firefox - 2

    我编写的这段代码在GoogleChrome和Opera上运行完美,但在Firefox上运行不佳functiononSaveJPG(url,n){varsave=document.createElement('a');save.href=url;save.target='_blank';save.download='Imageno'+n+'.jpeg'||url;varevent=document.createEvent('Event');event.initEvent('click',tru

  4. javascript - 带有 Javascript 的 Excel 宏 - 2

    我希望使用Javascript中的宏而不是默认的VBA来操作excel电子表格。我可以使用以下VBA代码执行javascript代码'javascripttoexecuteDimbAsStringb="functionmeaningOfLife(a,b){return42;}"'VBAtooltorunitDimoAsNewScriptControlo.Language="JScript"o.AddCodebMsgBoxo.Run("meaningOfLife",0,1)这使我能够执行任意javascript,但是我无法从

  5. javascript - 在 Angular 中动态创建元素 - 2

    我的javascript经验很少。我需要在单击某个项目时添加一个菜单。我们被要求从头开始构建它,而不使用任何库,如bootstrap组件或JQuery。我们正在使用Angularjs。在Angular上,我想知道创建新元素的正确方法。类似于我们没有的document.createElement。我正在添加一些代码,以便你们更好地了解我想要做什么。菜单指令.directive('menu',["$location","menuData",functionfactory(location,menuData){return{templateUr

  6. Javascript - 使用字符串连接设置变量 - 2

    这个问题在这里已经有了答案:UsedynamicvariablenamesinJavaScript(19个回答)关闭9年前。是否可以通过将两个字符串连接在一起形成名称来设置变量?如果可能的话,我想根据用户单击的对象的类名来确定要设置的变量。我知道我可以对一堆if/elseif语句进行硬编码,但如果我可以间接引用变量,那就太棒了。我在想这样的事情:varowner_read;vargroup_read;functionsetVariableIndirectly(object){varsecond=object.className;//returns"read"varfir

  7. javascript - 如何将 jquery 事件重新绑定(bind)到通过 ajax 加载的内容,而无需为每个事件/类执行此操作 - 2

    所以我在其中绑定(bind)了这个jquery-App:我所有“.btn-delete”元素的“删除功能”我所有“.btn-add”元素的“添加功能”等等。在我的webapp的一个div中,我异步加载内容,包括我想将“删除”和“添加”功能绑定(bind)到的元素。这些元素也有一个“btn-delete”或“btn-add”类-但由于内容是异步加载的,因此事件不会绑定(bind)到它们而不做任何事情。所以我听说使用可以在异步加载内容后立即触发的.on('click'...)函数,我可以重新绑定(bind)这些函数。但是我必须为我想使用的每个功能都这样做。我不想要。我想要的是有一个通用函数

  8. javascript - 添加文件 ://. 权限到 chrome 扩展 - 2

    如何使用chrome扩展程序启用file:///的权限。在我的manifest.json中,我尝试过:"permissions":["file:///*"]和"permissions":["file://*"]还有"permissions":["*:///C"]这些都不起作用。 最佳答案 "permissions":["file://*/*"]除非从您的本地磁盘加载扩展,否则默认情况下将禁用文件访问。用户必

  9. javascript - 根据屏幕尺寸执行功能 - 2

    我需要根据屏幕尺寸和屏幕尺寸变化执行特定功能(响应式)假设我有3个函数(例如)functionred(){$('div').css('background','#B60C0C').text('ScreenSizeRED');console.log('RED');}functionorange(){$('div').css('background','#EBAE10').text('ScreenSizeORANGE');console.log(&

  10. 多个元素上的 JavaScript onChange() - 2

    是否可以将相同的onChange()分配给多个元素(无jQuery)目前我在做varnamefirst=document.getElementsByName("attribute.IdentifierSource")[0];namefirst.onchange=function(){//disablesomestuff}但是,我必须对另外5个元素执行此onChange(),所以我想知道是否可以同时对所有元素执行此操作?或者我是否必须为每个元素执行此操作。(我对Javascript很陌生) 最佳答案 如果你想一次绑定(

随机推荐

  1. javascript - 使用 list.js 排序和搜索不起作用 - 2

    这是我第一次使用list.js,由于某些原因它无法正常工作。这是一个活生生的例子。http://hartslogmuseum.com/bookhjr10/test.php这是它应该做的http://listjs.com/examples这是我的代码。我只想搜索名称。<divclass="table-responsive"><divid="catalog"><inputclass="search"placeholder="Search"/><buttonclass="sort

  2. javascript - 为什么 JSON.Parse 说 "invalid character"? - 2

    我有一段在IE中运行的JS,其中包含以下行:vardata=JSON.parse("{skill:'SK_AUTO_DEV_TEST',kind:'IS_REQUIRED'}");谁能告诉我这是怎么回事? 最佳答案 因为这不是有效的JSON–您需要在属性名称周围加上引号。JSON.parse('{"skill":"SK_AUTO_DEV_TEST","kind":"IS_REQUIRED"}'); 关于jav

  3. javascript - 文件下载不适用于 firefox - 2

    我编写的这段代码在GoogleChrome和Opera上运行完美,但在Firefox上运行不佳functiononSaveJPG(url,n){varsave=document.createElement('a');save.href=url;save.target='_blank';save.download='Imageno'+n+'.jpeg'||url;varevent=document.createEvent('Event');event.initEvent('click',tru

  4. javascript - 带有 Javascript 的 Excel 宏 - 2

    我希望使用Javascript中的宏而不是默认的VBA来操作excel电子表格。我可以使用以下VBA代码执行javascript代码'javascripttoexecuteDimbAsStringb="functionmeaningOfLife(a,b){return42;}"'VBAtooltorunitDimoAsNewScriptControlo.Language="JScript"o.AddCodebMsgBoxo.Run("meaningOfLife",0,1)这使我能够执行任意javascript,但是我无法从

  5. javascript - 在 Angular 中动态创建元素 - 2

    我的javascript经验很少。我需要在单击某个项目时添加一个菜单。我们被要求从头开始构建它,而不使用任何库,如bootstrap组件或JQuery。我们正在使用Angularjs。在Angular上,我想知道创建新元素的正确方法。类似于我们没有的document.createElement。我正在添加一些代码,以便你们更好地了解我想要做什么。菜单指令.directive('menu',["$location","menuData",functionfactory(location,menuData){return{templateUr

  6. Javascript - 使用字符串连接设置变量 - 2

    这个问题在这里已经有了答案:UsedynamicvariablenamesinJavaScript(19个回答)关闭9年前。是否可以通过将两个字符串连接在一起形成名称来设置变量?如果可能的话,我想根据用户单击的对象的类名来确定要设置的变量。我知道我可以对一堆if/elseif语句进行硬编码,但如果我可以间接引用变量,那就太棒了。我在想这样的事情:varowner_read;vargroup_read;functionsetVariableIndirectly(object){varsecond=object.className;//returns"read"varfir

  7. javascript - 如何将 jquery 事件重新绑定(bind)到通过 ajax 加载的内容,而无需为每个事件/类执行此操作 - 2

    所以我在其中绑定(bind)了这个jquery-App:我所有“.btn-delete”元素的“删除功能”我所有“.btn-add”元素的“添加功能”等等。在我的webapp的一个div中,我异步加载内容,包括我想将“删除”和“添加”功能绑定(bind)到的元素。这些元素也有一个“btn-delete”或“btn-add”类-但由于内容是异步加载的,因此事件不会绑定(bind)到它们而不做任何事情。所以我听说使用可以在异步加载内容后立即触发的.on('click'...)函数,我可以重新绑定(bind)这些函数。但是我必须为我想使用的每个功能都这样做。我不想要。我想要的是有一个通用函数

  8. javascript - 添加文件 ://. 权限到 chrome 扩展 - 2

    如何使用chrome扩展程序启用file:///的权限。在我的manifest.json中,我尝试过:"permissions":["file:///*"]和"permissions":["file://*"]还有"permissions":["*:///C"]这些都不起作用。 最佳答案 "permissions":["file://*/*"]除非从您的本地磁盘加载扩展,否则默认情况下将禁用文件访问。用户必

  9. javascript - 根据屏幕尺寸执行功能 - 2

    我需要根据屏幕尺寸和屏幕尺寸变化执行特定功能(响应式)假设我有3个函数(例如)functionred(){$('div').css('background','#B60C0C').text('ScreenSizeRED');console.log('RED');}functionorange(){$('div').css('background','#EBAE10').text('ScreenSizeORANGE');console.log(&

  10. 多个元素上的 JavaScript onChange() - 2

    是否可以将相同的onChange()分配给多个元素(无jQuery)目前我在做varnamefirst=document.getElementsByName("attribute.IdentifierSource")[0];namefirst.onchange=function(){//disablesomestuff}但是,我必须对另外5个元素执行此onChange(),所以我想知道是否可以同时对所有元素执行此操作?或者我是否必须为每个元素执行此操作。(我对Javascript很陌生) 最佳答案 如果你想一次绑定(