ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript – 我可以在没有无限间隔的情况下检测文件更改或重新加载页面吗?

2019-06-09 13:15:06  阅读:222  来源: 互联网

标签:php javascript ajax icecast


我的问题基本上如下:我有一个网页在另一个子域(Airtime sourcefabric)上运行在线广播.现在我发现这个无线电插件有一个很好的实时API,所以我可以从这个URL访问JSON中的prevoius,当前和下一个音轨(和显示)信息:http://music.wickedradionet.com/api/live-info.

我需要在网页上显示这些信息.我可以使用javascript间隔工作,每秒(或每5秒,无关紧要)从API URL更新信息,但我认为必须有更好的方法来做到这一点.

有没有办法检查文件是否已更改,只有在它们不相同时才更新信息?我认为可以通过一些棘手的PHP来完成,例如设置CRON作业,或者使用WebSocket工作.有没有比在JS间隔中检查更好的方法?

我现在使用的javascript更新:http://wickedradionet.com/js/wickedradio-playlist.js

解决方法:

下面介绍了如何改进轮询的两种方法:

1)更有效的AJAX轮询

而不是每秒不断地执行ajax请求(无论您是否获得数据),您可以创建与服务器的hacky open连接,以便在请求完成后进行轮询,如下所示. $.ajax()调用的重要部分是完整选项.超时(即30秒)是为了确保在循环中断时继续轮询.

(function betterPoll(){
    $.ajax({ url: 'http://music.wickedradionet.com/api/live-info/', success: function (data) {
        // do something with "data"
    }, dataType: "json", complete: betterPoll, timeout: 30000 });
})();

2)WebSocket连接

一个更好的选择是WebSocket.这允许全双工,低延迟连接在客户端和服务器之间保持打开,从而实现“实时”通信.

如果您使用的是Node.js,则docs提供了有关如何使用Socket.IO进行WebSocket通信的示例.如果您正在使用PHP,快速搜索会将我带到RatchetPHP WebSockets.

下面是使用Socket.IO的示例:

在您的HTML中:

<script src="https://cdn.socket.io/socket.io-1.3.5.js"></script>
<script src="example.js"></script>

在“example.js”中,您可以使用以下内容:

var socket = io.connect('http://music.wickedradionet.com/api/live-info/');
socket.on('an event', function (data) {
  // do something with "data"
  socket.emit('another event', { other: 'data' });
});

在服务器上,你可以使用.on(‘另一个事件’,function(){})和.emit(‘一个事件’,function(){})做类似的事情.

标签:php,javascript,ajax,icecast
来源: https://codeday.me/bug/20190609/1205084.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有