RTMP應(yīng)對(duì)連接到來(lái)

作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者

連接到來(lái)的處理步驟

通過(guò)上文知道翩蘸,RTMP是通過(guò)ngx_rtmp_block()方式注冊(cè)連接到來(lái)的回調(diào)ngx_rtmp_init_connection(). 當(dāng)連接來(lái)到后沮榜,主要有如下幾個(gè)步驟:
1懂算、初始化RTMP SESSION相叁,通過(guò)ngx_rtmp_init_session党涕,這是一具重要結(jié)構(gòu)放典,這個(gè)結(jié)構(gòu)是每個(gè)連接保持必要信息逝变,在后續(xù)的處理時(shí)作為入?yún)⑹褂谩?/p>

typedef struct {
uint32_t              signature;  /* "RTMP" */ /* <-- FIXME wtf */
ngx_event_t           close;
void                  **ctx;
void                  **main_conf;
void                  **srv_conf;
void                  **app_conf;
ngx_str_t             *addr_text;
int                   connected;
#if (nginx_version >= 1007005)
ngx_queue_t            posted_dry_events;
#else
ngx_event_t            *posted_dry_events;
#endif
/* client buffer time in msec */
uint32_t                buflen;
uint32_t                ack_size;
/* connection parameters */
ngx_str_t               app;
ngx_str_t               args;
ngx_str_t               flashver;
ngx_str_t               swf_url;
ngx_str_t               tc_url;
uint32_t                acodecs;
uint32_t                vcodecs;
ngx_str_t               page_url;
/* handshake data */
ngx_buf_t              *hs_buf;
u_char                 *hs_digest;
unsigned                hs_old:1;
ngx_uint_t              hs_stage;
/* connection timestamps */
ngx_msec_t              epoch;
ngx_msec_t              peer_epoch;
ngx_msec_t              base_time;
uint32_t                current_time;
/* ping */
ngx_event_t             ping_evt;
unsigned                ping_active:1;
unsigned                ping_reset:1;
/* auto-pushed? */
unsigned                auto_pushed:1;
unsigned                relay:1;
unsigned                static_relay:1;
/* input stream 0 (reserved by RTMP spec)
 * is used as free chain link */
ngx_rtmp_stream_t      *in_streams;
uint32_t                in_csid;
ngx_uint_t              in_chunk_size;
ngx_pool_t             *in_pool;
uint32_t                in_bytes;
uint32_t                in_last_ack;
ngx_pool_t             *in_old_pool;
ngx_int_t               in_chunk_size_changing;
ngx_connection_t       *connection;
/* circular buffer of RTMP message pointers */
ngx_msec_t              timeout;
uint32_t                out_bytes;
size_t                  out_pos, out_last;
ngx_chain_t            *out_chain;
u_char                 *out_bpos;
unsigned                out_buffer:1;
size_t                  out_queue;
size_t                  out_cork;
ngx_chain_t            *out[0];
} ngx_rtmp_session_t;

2、初始化后如果配置有NGX_RTMP_CONNECT事件奋构,則通過(guò)ngx_rtmp_fire_event觸發(fā)HTTP事件壳影,根據(jù)之前文章提到的,在ngx_rtmp_limit_module模塊中注冊(cè)弥臼,其回調(diào)是ngx_rtmp_limit_connect,此回調(diào)主要是判斷是否超出了連接限制
3宴咧、通過(guò)ngx_rtmp_handshake進(jìn)入握手階段,通過(guò)ngx_rtmp_handshake_done結(jié)束
4径缅、進(jìn)入RTMP消息連循環(huán)ngx_rtmp_cycle掺栅,就是不停接收RTMP消息,處理RTMP消息纳猪。
5氧卧、流結(jié)束或出錯(cuò)等,都通過(guò)ngx_rtmp_finalize_session結(jié)束處理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末氏堤,一起剝皮案震驚了整個(gè)濱河市沙绝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖闪檬,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件星著,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粗悯,警方通過(guò)查閱死者的電腦和手機(jī)虚循,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)为黎,“玉大人邮丰,你說(shuō)我怎么就攤上這事∶” “怎么了剪廉?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵须眷,是天一觀的道長(zhǎng)该互。 經(jīng)常有香客問(wèn)我,道長(zhǎng)戈稿,這世上最難降的妖魔是什么笛质? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任泉沾,我火速辦了婚禮,結(jié)果婚禮上妇押,老公的妹妹穿的比我還像新娘跷究。我一直安慰自己,他們只是感情好敲霍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布俊马。 她就那樣靜靜地躺著,像睡著了一般肩杈。 火紅的嫁衣襯著肌膚如雪柴我。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,031評(píng)論 1 285
  • 那天扩然,我揣著相機(jī)與錄音艘儒,去河邊找鬼。 笑死夫偶,一個(gè)胖子當(dāng)著我的面吹牛界睁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播索守,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼晕窑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了卵佛?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎截汪,沒(méi)想到半個(gè)月后疾牲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衙解,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年阳柔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚓峦。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舌剂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出暑椰,到底是詐尸還是另有隱情霍转,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布一汽,位于F島的核電站避消,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏召夹。R本人自食惡果不足惜岩喷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望监憎。 院中可真熱鬧纱意,春花似錦、人聲如沸鲸阔。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)隶债。三九已至腾它,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間死讹,已是汗流浹背瞒滴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留赞警,地道東北人妓忍。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像愧旦,于是被迫代替她去往敵國(guó)和親世剖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 作者原創(chuàng)笤虫,轉(zhuǎn)載請(qǐng)聯(lián)系作者 本文主要介紹通過(guò)前文介紹的將rtmp模塊編譯進(jìn)nginx情況下旁瘫,啟動(dòng)nginx時(shí)rtmp...
    Alfie20閱讀 2,244評(píng)論 0 2
  • 作者原創(chuàng)祖凫,轉(zhuǎn)載請(qǐng)聯(lián)系作者 RTMP簡(jiǎn)介 Real Time Messaging Protocol(實(shí)時(shí)消息傳送協(xié)議...
    Alfie20閱讀 1,360評(píng)論 0 4
  • 作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者 作者將以系列文章進(jìn)行解析Nginx-Rtmp模塊代碼,地址為nginx-rtmp-mod...
    Alfie20閱讀 1,265評(píng)論 0 2
  • Nginx API for Lua Introduction ngx.arg ngx.var.VARIABLE C...
    吃瓜的東閱讀 5,717評(píng)論 0 5
  • 第一章 Nginx簡(jiǎn)介 Nginx是什么 沒(méi)有聽(tīng)過(guò)Nginx酬凳?那么一定聽(tīng)過(guò)它的“同行”Apache吧惠况!Ngi...
    JokerW閱讀 32,642評(píng)論 24 1,002