云上听风的博客

以前c++为主,现在喜欢golang。 简书同步更新:https://www.jianshu.com/u/563117ad2863

WebRTC offer - answer交换sdp流程分析

被WebRTC自带oc版本的例子恶心到了,不做笔记还真不行。 两端开启音视频通讯时,一方做为offer主动发出邀请,另一方做为answer被动等待offer的邀请做出反应。 代码中的流程: Offer: 1. offerForConstraints,得到sdp后回调 &am...

2018-05-16 19:08:57

阅读数 1140

评论数 1

开源MQTT broker服务器gomq开发进度

前几天因为研究开源NATS服务器gnatsd和开源半成品MQTT服务器surgemq以及对mosquitto的不满诞生了自己编写golang版开源MQTT broker服务器的想法,但是工作很忙所以只能搁浅计划,不过还是忍不住花了一天时间把surgemq的mqtt协议合并进gnatsd,新开源项目...

2018-05-08 20:57:39

阅读数 1034

评论数 1

MQTT标准文档QOS等级容易理解错和surgemq QOS等级的BUG

MQTT SUBSCRIBE 英文原版: 3.8 SUBSCRIBE - Subscribe to topics 3.8.4 Response When the Server receives a SUBSCRIBE Packet from a Client, the ...

2018-05-08 15:05:11

阅读数 465

评论数 0

WebRTC源码分析之RTP/RTCP(二)

WebRTC中RTP和RTCP共用一个UDP端口 WebRTC中的RTP和RTCP都使用udp传输,并且RTP和RTCP混合使用同一个udp端口,因为打通NAT本来就不是一件容易的事,如果还分开两个端口的话更增加程序复杂度和NAT打洞成功的难度。 WebRTC怎么区分RTP/RTCP包...

2018-05-08 12:58:20

阅读数 489

评论数 0

WebRTC源码分析之RTP/RTCP(一)

首先学习一下RTP/RTCP的基础知识。 RTP/RTCP协议 RTP报头 当没有CSRC时RTP报头一共12个字节。 报头格式如下: 版本号(V):2比特,用来标志使用的RTP版本,当前协议版本号为2。 填充位(P):1比特,如果P=1,则在该报文的尾部填充一个或多个额外...

2018-05-08 12:57:41

阅读数 349

评论数 0

RFC3550 RTP 中文版(转载)

原文地址:RFC3550 RTP 中文版 英文版原文:RFC3550英文版 - RTP: A Transport Protocol for Real-Time Applications 字符描述的表格不对齐懒得换成截图,所以还是请参看英文原版表格。 转载过来后修改了一部分错别字。 这个翻译...

2018-05-08 12:57:08

阅读数 271

评论数 0

WebRTC源码分析之IOS Audio Unit

本来没想要写这篇,毕竟不是什么关键技术,但是实在是因为苹果的文档和API实在太烂了,网上关于Audio Unit的文章也太少,写下来就算当个笔记。 WebRTC与声音设备有关的代码在modules/audio_device目录下面,包括各个平台的录音采集和播放声音的代码。 其中windows上...

2018-05-07 22:09:17

阅读数 469

评论数 1

gnatsd集群原理分析

看了一天gnatsd集群相关的源码差点没把我给绕晕,总算是搞个大体明白了,最近功力暴涨,哈哈哈。集群连接集群中的每个服务器之间都是互相通过route连接。 server1启动一个route进行tcp监听等待远程route连接。 收到server2的route client连接以后,server...

2018-05-06 09:56:06

阅读数 395

评论数 0

MQTT QOS等级订阅和发布的关系

发布publish和订阅subscribe都可以指定qos等级。 pub时指定的qos是跟服务器有关系的,比如qos2时,是保证服务器只收到一次,而不是最终的订阅者。 订阅者在sub时虽然指定了qos,但是收到的消息不一定就是指定qos等级的消息,而可能是降级的了。 为响应订阅而发出的消息的...

2018-05-06 09:54:47

阅读数 1095

评论数 0

golang的bufio源码分析

原本只想用用bufio,但是网上文章没有一个写清楚bufio到底怎么用,每个方法具体干了什么,搞不明白原理就不敢乱用,还好有源码,自己来分析最清楚。Reader分析func NewReaderSize(rd io.Reader, size int) *Reader { // Is it a...

2018-05-06 09:54:00

阅读数 90

评论数 0

golang TCP Socket的一篇好文章

Go语言TCP Socket编程

2018-05-06 09:53:21

阅读数 1371

评论数 0

MQTT的消息重发与消息排序

因为对surgemq的研究发现qos>0没有重发功能,然后去看了MQTT协议文档,在qos>0的情况下,服务端确实也需要实现重发,而且还必须保证顺序。 虽然tcp一般情况下保证不丢包,但是服务端在超时时间内没有收到客户端的publish ack时也需要...

2018-05-06 09:51:24

阅读数 1100

评论数 0

surgemq主流程及优缺点

主流程 Server Listen tcp端口 for循环Accept Accept后go handleConnection(conn) handleConnection创建srv service,srv相当于client 在service中又go了3个goroutine:processo...

2018-05-06 09:50:09

阅读数 369

评论数 0

有种写个开源mqtt服务器的冲动

近来对于mqtt服务器mosquitto和nats服务器gnatsd稍有研究(三四天时间),gnastd性能很不错,但输在于没有持久化和非标准协议导致客户端支持处于弱势,mosquitto性能太差,代码极度缺少优化,但因为胜在mqtt标准,客户端有优势。 不想直接改mosquitto,c语言虽然...

2018-05-06 09:47:47

阅读数 2407

评论数 0

gnatsd的Subject数据结构及优于mosquitto的原因

主题名(Subject Name) 主题名是大小写敏感的,必须是非空字符串,不能包含空格,使用“.”符号来分层,mqtt中使用“/”分层。 星号“*”匹配一层,跟mqtt中的“+”一样。 大于号“>”匹配后面所有层,跟mqtt中的“#”一样。 源码分析 ...

2018-05-06 03:02:57

阅读数 136

评论数 0

暂时放弃nats - gnatsd

放弃的原因 都下决心用gnatsd了,最终放弃的原因是ios平台居然没有好的客户端。 官方推荐的swift客户端: travelish/Swift*Nats* 最后更新是2016年,而且代码太简陋了,很多功能都没实现。 另外一个开源raykrow/swifty-nats看上去不错,可惜用...

2018-05-06 03:02:24

阅读数 253

评论数 0

gnatsd修改防止一个帐号重复登录

golang就是爽,代码简单易懂。稍微看了一下gnatsd的源码,应该这样改就可以: 首先要自定义鉴权系统,每个用户都需要使用不同的用户名进行鉴权登录。 修改server.users新增一个clientid字段,记录登录成功的用户id,当然要记得写入时上server的锁。 client增加...

2018-05-06 03:01:51

阅读数 86

评论数 0

消息系统nats(gnatsd)的自定义鉴权扩展

因为对mqtt服务器mosquitto的源码简单研究感觉其性能在多处都有瓶颈比如网络层没有使用epoll,topic使用树(在大量topic时岂不是要遍历到死)还有很多……,所以又去网上搜索其他消息系统的资料,然后发现gnatsd的性能很牛逼,虽然功能上比mqtt弱,但是在某种程度上可能也可以契合...

2018-05-06 03:01:06

阅读数 240

评论数 0

coTurn配置(主要是客户端登录验证)及验证原理分析

想支持WebRTC服务器coTurn必须开启long-term credentials mechanism,也就是加上-a选项。 一、最简单不使用数据库直接设置密码 ./turnserver -a --no-tls --no-dtls --no-stun -u testuser:t...

2018-05-06 02:59:51

阅读数 421

评论数 0

coTurn的附加程序命令行测试

turnadmin 看了代码以后发现turnadmin和turnserver其实是一个程序,代码中判断了第一个命令行参数是否”turnadmin”来区别。 trunadmin的入口为:mainrealy.c的adminmain函数 1) For the long-term cred...

2018-05-06 02:59:23

阅读数 179

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭