我使用WebAPI2实现了REST服务,该服务实现了管理由访问服务的不同客户端创建和加入的不同会话.
会话包含有关访问应用程序功能的信息以及已加入同一会话的参与者的信息.
每个客户端从服务器获取会话信息和访问列表,以便每秒进行同步.根据访问权限的更改,客户端功能将更改(启用/禁用).
我正在使用MemoryCache类在WebAPI服务中存储会话信息,如下所示.
public static class SessionManager{
private static object objForLock = new object();
public static List<Session> SessionCollection
{
get
{
lock (objForLock)
{
MemoryCache memoryCache = MemoryCache.Default;
return memoryCache.Get("SessionCollection") as List<Session>;
// return HttpContext.Current.Application["SessionCollection"] as List<Session>;
}
}
set
{
lock (objForLock)
{
MemoryCache memoryCache = MemoryCache.Default;
memoryCache.Add("SessionCollection", value, DateTimeOffset.UtcNow.AddHours(5));
//HttpContext.Current.Application["SessionCollection"] = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
}
我的问题是关于缓存的不一致行为.
当客户端发送同步调用时,它将产生不一致的结果.对于某些请求,客户端获取正确的数据,对于某些请求,客户端在某些请求后获取空数据替代.
我添加了调试器并监视对象的null结果,然后"memoryCache.Get("SessionCollection")"也为null.经过一些连续的请求后,它将再次成功.我不明白为什么这个对象不是持久的.
另外,我也试过"HttpContext.Current.Application ["SessionCollection"]",但同样的问题就在那里.
我读过"app pool recycle",它在微粒时间后回收所有缓存.如果我的缓存对象被app pool recycle回收,那么我该如何再次获取此对象?
请一些人帮我解决这个问题.提前致谢.
我正在使用Kurento媒体服务器进行视频流,我在RTSP上有h264视频源.我正在使用下面的代码创建PlayerEndpoint.
pipeline.create('PlayerEndpoint', {uri: 'rtsp://hostaddress:8554/stream', useEncodedMedia: false}, function(error, _playerEndpoint) {
但它仍然将h264转换/编码为VP8,它需要更多的编码处理.所以我在视频流方面遇到了延迟.我只是想直接传输h264视频而无需转换/编码到VP8.我认为Firefox支持H264视频编解码器.
是否可以在Kurento媒体服务器中禁用编码?如果是,那么请帮助我,或者根据需要建议更多代码更改.
Firefox能够从KMS中播放这样的h264流吗?
我能够使用WebRTC与Kurento进行视频流传输,我需要使用Kurento Media服务器的MCU功能实现多方音频会议。因此,来自所有客户端的音频将被合并,并使用WebRTC高效地将合并后的音频发送回所有客户端。
如果它可以工作,那么我们仅需要两个连接(一个用于发送,一个用于接收),否则,我们需要使用WebRTC与所有客户端的对等连接。建立与所有所有客户端的对等连接是不可行的。
请向我建议使用Kurento Media Server实现音频MCU的任何示例代码,或指导我使用Kurento Media Server实现音频的MCU。
我在nodejs中有一个具有不同属性的对象,还有不同的异步函数,这些函数通过一些复杂的执行来访问和修改该对象。单个异步函数可能具有内部回调(或异步函数),这可能需要一些时间才能执行,然后该函数将修改该对象。我想锁定该对象,直到完成所有修改,直到其他异步函数都可以访问它为止。
例:
var machineList = {};
function operation1() {
waitForMachineList();
//complex logic
//modification of machineList, some closure and callbacks functions and again modification of machineList
leaveFromMachineList();
}
function operation2() {
waitForMachineList();
//complex logic
//modification of machineList, some closure and callbacks functions and again modification of machineList
leaveFromMachineList();
}
function operation3() {
waitForMachineList();
//complex logic
//modification of machineList, some closure and callbacks functions and again modification of machineList
leaveFromMachineList();
}
function operation4() {
waitForMachineList();
//complex logic
//modification of machineList, some closure …Run Code Online (Sandbox Code Playgroud) kurento ×2
asynchronous ×1
c# ×1
caching ×1
iis ×1
javascript ×1
locking ×1
node.js ×1
webrtc ×1