html刷新标记,Html5音频标记不刷新页面刷新内容

我正在开发一个Radio网站,我创建了一个C#后端,它将一个字节流写入当前的HTTP响应,然后将其加载到HTML5 audio标记上。

我的问题是:我有5首歌曲。期望的行为是每次页面加载时,它应该要求控制器播放随机歌曲。实际发生的是,第一次页面加载,控制器被调用并且歌曲正常播放,但如果用户重新加载页面,或导航到新页面并将它们返回到收音机,则音频标签而不是再次调用控制器,只播放上次调用时在音频缓冲区中下载的内容,并且只有当下载的缓冲区完成播放时,音频标签才会调用控制器,这会产生不希望的跳过,如播放15秒的一首歌和一首新歌。

我的音频HTML是在“渲染”方法上动态创建的。我尝试使id随机,尝试强制缓冲区清理,但即使使用新的id,标记仍将播放预加载缓冲区的内容,即使preload属性设置为“none”。除此之外,我尝试将随机令牌作为参数发送到c#控制器,以尝试避免基于URL的任何缓存问题,但它也不起作用。

继承人我的控制人员:

public void GetStream(StreamType? type, string token)

{

var files = this.GetFiles(type);

int rnd;

rnd = new Random((int)DateTime.Now.Ticks).Next(0, files.Count);

using (Stream mystream = files[rnd].OpenRead())

{

this.CurrentTrack = files[rnd].Name;

mystream.Position = 0;

using (BinaryReader reader = new BinaryReader(mystream))

{

byte[] bytes = new byte[mystream.Length];

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;

response.Clear();

response.ClearHeaders();

response.ClearContent();

response.BufferOutput = true;

response.ContentType = "audio/mp3";

response.AddHeader("Accept-Ranges", "bytes");

response.AddHeader("Cache-Control", "no-cache");

response.AddHeader("Content-Length", mystream.Length.ToString());

int bytesRead;

while ((bytesRead = reader.Read(bytes, 0, bytes.Length)) > 0)

{

response.OutputStream.Write(bytes, 0, bytesRead);

}

}

}

}

这是我的JS:

audioApp.Initialize = function (type) {

audioApp.Render(type);

}

audioApp.Render = function (type) {

type = (type == undefined || type == null || type == "") ? 0 : type;

var token = audioApp.MakeId();

var html = "

"

+ "

"

+ ""

+ " "

+ " Sorry, your browser doesn't support HTML5 audio."

+ ""

$("#divAudioRender").append(html);

}

“渲染”方法将创建发布到我后端的音频元素。

我在网上搜索了很多方法,以便在每次页面刷新时强制清理音频缓冲区,但我找不到任何内容。

感谢任何帮助,

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值