摘要:
目标:设计一个短时缓存,被缓存的对象在缓存里待的时间超过了指定的时间要被清除。 好处:缓存不会越来越大。 用途:用在某种临时性频繁存取的场合。 设计: 需要有一个缓存对象。缓存对象里包裹着真正的被缓存的对象和被缓存的时刻。 需要有一个Map,用来存放“缓存对象” 需要有一个定时器,周期性的检查Map 阅读全文
摘要:
可以的。你只需要将下面这张图的Bob换成你的Sip Server就可以了。 你还需要在WebSocket服务器 (http://proxy.example.com) 端写一些代码,目的是将客户端过来的sip invite转发到你自己的sip server. 阅读全文
摘要:
WebSocket连接的建立只有两步: Client发送一个 ‘upgrade' request,这是一个http请求,使用的是http协议。 Server返回一个http 101,代表请求成功。 接下来双方就开始使用WebSocket 协议相互通讯了,不再使用http协议了。 下面这张图就是上面着 阅读全文
摘要:
peerA (RTCPeerConnection对象) 调用createOffer方法准备创建SDP 在createOffer的回调方法里,同时做了这两件事 调 用peerA的setLocalDescription(description)方法,这个方法会触发peerA的icecandidate 监 阅读全文
摘要:
如何让网页自动适应PC端和移动端 只需增加这么一行:<meta name="viewport" content="width=device-width, initial-scale=1.0"> viewport是view portion的意思,用汉语说,就是“可见区域“。所以这个标签是在定义可见区域 阅读全文
摘要:
https://www.daimajiaoliu.com/daima/4ed34f008100404 很多年前自己写的,本地早已遗失,没想到网上还有。转发一下,留个纪念。 阅读全文
摘要:
在网上看到一篇文章:https://developer.aliyun.com/article/4387 看着眼熟,原来是我写的,很多年前写的,我自己都没有保存好,都不知道哪里去了,没想到互联网上竟然有人转载,用这种方式保存下来了。 很好。 的确,互联网是有记忆的! 阅读全文
摘要:
浏览器如何获取音视频流 答:用webrtc的navigator.getUserMedia方法,方法体里主要是写下面两句话: video.src = window.URL.createObjectURL(stream); video.srcObject = stream; 这两句的作用都是获取用户音视 阅读全文
摘要:
符号#常常表示number, 比如#1 表示 number 1. 所以,在linux shell中,用$#表示传递进来的参数个数。 * 常用来表示“所有”,所以$*表示传递进来的所有参数合在一起. 阅读全文