Ice客户端和服务器端建立连接的时机

本文介绍了使用Ruby语言实现ICE客户端与服务器之间Socket通信的过程。指出Ice::initialize(ARGV)才是建立通信的关键代码,而非stringToProxy方法或者通过接口对象调用方法。
ruby访问ice

ice客户端和服务器真正建立起socket通信的代码是:

Ice::initialize(ARGV)


而不是

Xxx.stringToProxy("CTCenterSrvAdapter:default -h 10.2.226.8 -p 30000")


更不是

得到接口对象之后执行方法时。
【修改背景】 relay支持预连接 由relay模块完成预连接初始化,以及通过透传使预连接开始推流 由httpserversession完成心跳包维持预连接、接收stop信令心跳包回复 基本功能概括为: 通过透传实现设备预连接relay服务器,但不推流,而是由心跳包维持预连接,当透传pre_connection=0或者接收到start信令之后再开始推流; 新增stop信令用于停止推流,但依旧保持预连接; 连续两次心跳包超时或者收到error回复则断开连接。 注:app开启预连接功能需要增加组件"relayPreConnection":1 【修改内容】 1.relay模块新增pre_connectionheart_beat_cycle存储预连接信息,包括RELAY_SESSION、RELAY_REQUEST_INFO 2.新增结构体RELAY_PRE_CONN用作维护预连接状态,并将其作为webParam_t的成员可在http_relay与httpserversession里面维护。 3.relay透传json解析函数check_request_param_handle增加预连接字段解析 4.适配直接推流,当透传为预连接时,在TPHttpOnAccept函数中,is_directly_push_stream标记当前session为不直接推流 5.新增HTTPRelayPreHeatBeat函数,实现心跳包是否需要发送的校验以及心跳包发送。 6.HTTPSessionParseJson函数增加在预连接下对于stop信令的解析。收到stop信令后,停止推流 7.HTTPSessionParseJson新增在对于心跳包回复的识别与解析 预连接建立后,触发推流有两种方式:start信令推流及新透传pre_connection=0 A:对于start信令触发:与没有预连接逻辑一样,不需要改动 B:对于透传pre_connection=0触发,做了以下改动: 1.由(1/2)里面增加msg消息结构体成员实现将透传请求发送到httpserver,该msg消息及字段用于在透传pre_connection=0触发预连接开始推流的操作 2.当直播透传来到,如果透传里面relay_req_urlrelay_server没有发生改变,则发送msg消息通知httpserver找到对应预连接开始推流 3.http_change_connect_state监听RELAY_START_STREAM_MSG_ID消息,并实现:透传pre_connection=0为触发预连接开始推流操作;透传pre_connection=1,为将非预连接普通推流修改为预连接推流 【自测】 1.打开app但不点击播放,开启预连接,设备建立连接成功,并开始用心跳包维持连接 2.app点击播放设备接收到start信令开始推流(或者设备接收到pre_connection=0透传开始推流) 3.退出播放页面,设备收到stop信令,停止推流,但维持心跳包。之后可继续用start信令或者pre_connection=0开启推流 4.当连上预连接发心跳包时录用路由阻挡心跳包发送,使其收不到回复,两次之后断开连接。符合预期 5.兼容性:支持预连接不支持预连接的app交替使用,直播正常 根据以上文字,relay预连接是如何设计的
最新发布
10-07
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值