最新要闻
- 今日要闻!第二届中国报业创新发展大会今日开幕,羊城晚报再获殊荣!
- 河南安阳:多彩民俗过端午-环球热点
- CCTV16直播深足VS成都!足协杯两支败军相遇,陈涛率队保级 徐正源冲击亚冠|全球快资讯
- 英伟达与云计算巨头Snowflake达成合作
- 机器人工程技术人员:让机器人“吃”得更少 “干”得更多_每日短讯
- 元隆雅图(002878)盘中异动 股价振幅达15.82% 跌6.52% 报18.14元(06-26) 天天快资讯
- 每日焦点!苹果iOS 17扫码大幅优化:链接按钮自动出现
- 环球热推荐:“选择成就精彩”——“技能+”新媒体创意大赛获奖作品混剪片来了!
- 外交部发言人:中方重视和发展对韩关系的基本立场没有变化
- 环球热资讯!国家电网董事长:中国电价在全球属于较低水平
- 美国一架飞机撞入民宅:房屋起火飞行员死亡|今日精选
- 141家上市大厂被AI耍了!谷歌意外成帮凶
- 环球视讯!独特翻转舱设计!魅族PANDAER PASA降噪耳机图赏
- 电动自行车头盔新国标7月施行 旧的还能佩戴?海口明确不处罚|天天速读
- 传承非遗文化 感受工匠精神 沙塘中心小学小记者体验漆画创作_天天滚动
- 四川汶川县两地突发山洪泥石流灾害,官方通报:7人失联 正全力搜救中
手机
市场监管总局回复关于软件规范问题_当前滚动
非法运输爆炸性危险物质 一男子被三亚警方拘留-世界热消息
- 市场监管总局回复关于软件规范问题_当前滚动
- 非法运输爆炸性危险物质 一男子被三亚警方拘留-世界热消息
- 【全球热闻】曾被漫威定为钢铁侠二代,却被粉丝喷改名,这个角色现在来了!
- 6月26日芝加哥商业交易所(CME)金属类商品成交量报告已在金十数据中心更新!欢迎点击查看
- 【天天新要闻】解码|今天惠州这两个高铁站为什么改名?
- 金信诺:高速裸线及应用于服务器内部的高速组件已经量产并批量供应浪潮、联想等主流服务器厂商
家电
今日要闻!tryit-jssip 的本地部署
1. tryit-jssip 本地部署
1.1. sip代理服务器
tryit-jssip后端需要sip代理服务器。
jssip所测试过的sip代理服务器
使用 resiprocate 的 repro 作为sip代理服务器。
(资料图片)
1.1.1. 下载并编译resiprocate
git clone https://github.com/resiprocate/resiprocate.gitgit checkout -b 1.12.0 resiprocate-1.12.0
autoreconf --install
./configure --with-popt --with-mysql --with-ssl --with-repro --enable-dtls --enable-ipv6 --enable-shared=no CXXFLAGS="-I/mnt/resiprocate/contrib/cajun/include/"
1.1.2. 修改repro配置,同时启用ws和wss
关于 repro 如何配置以支持wss的资料较少,以下配置通过ip方式测试可行,但仍然存在问题。
修改 resiprocate/repro/repro.config
diff --git a/repro/repro.config b/repro/repro.configindex bfb68c782..5358fd981 100644--- a/repro/repro.config+++ b/repro/repro.config@@ -232,6 +232,19 @@ TlsDHParamsFilename = dh2048.pem # Transport6TlsClientVerification = None # Transport6RecordRouteUri = sip:h1.sipdomain.com;transport=WS +# WS transport config+ Transport1Interface = 10.18.0.200:6060+ Transport1Type = WS+ Transport1RecordRouteUri = auto+# WSS transport config+ Transport2Interface = 10.18.0.200:10443+ Transport2Type = WSS+ Transport2TlsDomain = sip-wss-server.repro.localhost+ Transport2TlsClientVerification = None+ Transport2RecordRouteUri = sip:repro.localhost;transport=ws+ Transport2TlsCertificate = /mnt/resiprocate/resip/certs/domain_cert_sip-wss-server.repro.localhost.pem+ Transport2TlsPrivateKey = /mnt/resiprocate/resip/certs/domain_key_sip-wss-server.repro.localhost.pem+ # Comma separated list of DNS servers, overrides default OS detected list (leave blank # for default) DNSServers =@@ -244,14 +257,14 @@ DisableIPv4 = false # Comma separated list of IP addresses used for binding the HTTP configuration interface # and/or certificate server. If left blank it will bind to all adapters.-HttpBindAddress = 127.0.0.1, ::1+HttpBindAddress = 10.18.0.200 # Port on which to run the HTTP configuration interface and/or certificate server # 0 to disable (default: 5080) HttpPort = 5080 # disable HTTP challenges for web based configuration GUI-DisableHttpAuth = false+DisableHttpAuth = true # Realm to use for HTTP admin interface digest authentication HttpAdminRealm = repro@@ -702,7 +715,7 @@ CongestionManagementTolerance = 200 # Specify the number of seconds between writes of the stack statistics block to the log files. # Specifying 0 will disable the statistics collection entirely. If disabled the statistics # also cannot be retreived using the reprocmd interface.-StatisticsLogInterval = 3600+StatisticsLogInterval = 0 # Use MultipleThreads stack processing. ThreadedStack = true@@ -802,7 +815,7 @@ DNSGreylistDuration = 1800000 # the alternate transport specification mechanism and defining a RecordRouteUri per # transport: TransportXRecordRouteUri # WebSocket / WebRTC users: it is usually necessary to set this to false-DisableOutbound = true+DisableOutbound = false # Set the draft version of outbound to support (default: RFC5626) # Other accepted values are the versions of the IETF drafts, before RFC5626 was issued@@ -835,7 +848,7 @@ AssumeFirstHopSupportsFlowTokens = false # the alternate transport specification mechanism and defining a RecordRouteUri per # transport: TransportXRecordRouteUri # WebSocket / WebRTC users: it is usually necessary to set this to true-EnableFlowTokens = false+EnableFlowTokens = true # If EnableFlowTokens is enabled, then by default flow tokens are only used for inbound # Record-Routes if the client is directly connected (ie: has only a single Via header). If you
参考资料:
基于resip 的WSS调试(踩坑记)
Configuring repro for WebRTC
resiprocate - WebRTC and SIP Over WebSockets
1.1.2.1. 启用wss需要的证书
参考 resiprocate/resip/certs/
中的说明,直接利用其提供的脚本程序生成私钥和公钥
./makeCA./makeCert sip-wss-server.repro.localhost 3650
之后将生成私钥 domain_key_sip-wss-server.repro.localhost.pem
和 证书 domain_cert_sip-wss-server.repro.localhost.pem
1.1.3. 添加domain和user
这里添加的用户在后续网页注册sip代理时需要用到。
- 启动 repro 后,通过 web 页面添加 domain ,10.18.0.200。
- 通过 web 页面添加 users ,test1/123456、test2/123456。
- 重启 repro
1.2. tryit-jssip部署
node环境:
npm@9.7.1 (/root/.nvm/versions/node/v18.16.0/lib/node_modules/cnpm/node_modules/npm/index.js)node@18.16.0 (/root/.nvm/versions/node/v18.16.0/bin/node)npminstall@7.9.0 (/root/.nvm/versions/node/v18.16.0/lib/node_modules/cnpm/node_modules/npminstall/lib/index.js)prefix=/root/.nvm/versions/node/v18.16.0
1.2.1. 下载tryit-jssip
git clone https://github.com/versatica/tryit-jssip.gitgit checkout -b v1.0.3 1.0.3
1.2.2. 依赖包安装
参考资料
tryit-jssip - github
Issues with libraries using an outdated vinyl version #288
由于这个仓库长期停止维护,有些依赖包已经发生变更,再加上国内网络环境影响。
修改 package.json
diff --git a/package.json b/package.jsonindex 70f7924..5da52ad 100644--- a/package.json+++ b/package.json@@ -20,9 +20,10 @@ "react-addons-css-transition-group": "^15.4.0", "react-copy-to-clipboard": "^4.2.3", "react-dom": "^15.4.0",- "react-notification-system": "ibc/react-notification-system#master",+ "react-notification-system": "^0.4.0", "react-tap-event-plugin": "^2.0.1",- "url-parse": "^1.1.7"+ "url-parse": "^1.1.7",+ "vinyl": "^3.0.0" }, "devDependencies": { "babel-plugin-transform-object-assign": "^6.8.0",@@ -37,7 +38,7 @@ "eslint": "^3.10.2", "eslint-plugin-import": "^2.2.0", "eslint-plugin-react": "6.2.1",- "gulp": "git://github.com/gulpjs/gulp.git#4.0",+ "gulp": "^4.0.2", "gulp-css-base64": "^1.3.4", "gulp-eslint": "^3.0.1", "gulp-header": "^1.8.8",@@ -52,7 +53,7 @@ "ncp": "^2.0.0", "nib": "^1.1.2", "vinyl-buffer": "^1.0.0",- "vinyl-source-stream": "^1.1.0",+ "vinyl-source-stream": "^2.0.0", "watchify": "^3.7.0" } }
npm install
安装gulp-cli,这个工具用来启动项目。
npm install -g gulp-cli
1.2.3. https + wss
1.2.3.1. 私钥和证书一致
tryit-jssip/gulpfile.js 中默认使用的https页面,其中带有密钥和自颁发的证书,具体位置位于 tryit-jssip/node_modules/browser-sync/certs/
, 而以上的 repro 也有使用到自己的密钥和证书,两者是不一致的,会导致后续注册到 repro 出现证书认证错误而注册失败!
因此需要将之前 repro 生成的私钥和公钥拷贝到 tryit-jssip 项目中。使得 https 和 wss 使用的同一密钥和自签名的证书
cp -p /mnt/resiprocate/resip/certs/domain_key_sip-wss-server.repro.localhost.pem /mnt/tryit-jssip/node_modules/browser-sync/certs/server.key
cp -p /mnt/resiprocate/resip/certs/domain_cert_sip-wss-server.repro.localhost.pem /mnt/tryit-jssip/node_modules/browser-sync/certs/server.crt
1.2.3.2. 启动项目
gulp live
出现以下信息表示项目成功启动
[11:03:54] Finished "live" after 3.8 s[Browsersync] Access URLs: ------------------------------------- Local: https://localhost:3000 External: https://10.18.0.200:3000 ------------------------------------- UI: http://localhost:3001 UI External: http://localhost:3001 -------------------------------------[Browsersync] Serving files from: out[Browsersync] Watching files...[Browsersync] Couldn"t open browser (if you are using BrowserSync in a headless environment, you might want to set the open option to false)
1.2.3.3. 页面配置
打开 https://10.18.0.200:3000
,配置sip用户代理和服务器。
- SIP URI:
sip:test1@10.18.0.200
- SIP password:
123456
- WebSocket URI:
wss://10.18.0.200:10443
- 其他默认即可
1.2.4. http + ws
1.2.4.1. 修改启动配置,以http方式启动项目
修改 tryit-jssip/gulpfile.js
diff --git a/gulpfile.js b/gulpfile.jsindex 5f859e2..15c2c4f 100644--- a/gulpfile.js+++ b/gulpfile.js@@ -315,7 +315,7 @@ gulp.task("openbrowser", (done) => { baseDir : OUTPUT_DIR },- https : true,+ https : false, ghostMode : false,
1.2.4.2. 页面配置
打开 http://10.18.0.200:3000
,配置sip用户代理和服务器。
- SIP URI:
sip:test1@10.18.0.200
- SIP password:
123456
- WebSocket URI:
ws://10.18.0.200:6060
- 其他默认即可
1.2.4.3. 修改chrome安全设置
呼叫时会提示 TypeError: Cannot read properties of undefined (reading "getUserMedia")
这是由于采用的http和ws方式,需要修改chrome浏览器的安全设置,打开 chrome://flags/#unsafely-treat-insecure-origin-as-secure
,填入 http://10.18.0.200:3000
并启用。
参考:
关于使用通过ip访问网站无法使用多媒体,MediaDevices.getUserMedia()为undefined的解决方案--(亲测可用)。
1.3. 现存问题
1.3.1.
呼叫按钮点击后,要等40多秒的时间才能获取本端sdp的问题
判断应该是获取ice候选地址时造成的长时间延迟,目前通过在配置中删除iceservers可以立即呼叫。
修改 tryit-jssip/lib/settingsManager.js
diff --git a/lib/settingsManager.js b/lib/settingsManager.jsindex 0c05636..07c9f9d 100644--- a/lib/settingsManager.js+++ b/lib/settingsManager.js@@ -25,15 +25,6 @@ const DEFAULT_SETTINGS = instance_id : null, session_timers : true, use_preloaded_route : false,- pcConfig :- {- iceServers :- [- {- urls : [ "stun:stun.l.google.com:19302" ]- }- ]- }, callstats : { enabled : false,
其他方法可尝试参考:
_createLocalDescription answer/connect delay greater than 10 seconds
1.3.2.
https+wss方式下呼叫一段时间后断开的问题
在呼叫后 主叫的ACK响应无法送达被叫端,导致被叫一直重传200OK,在session超时后,会话会结束。
初步判断还是 repro 的wss设置尚不完全准确。目前暂时以http+ws方式规避。
关键词:
今日要闻!tryit-jssip 的本地部署
四川一个班高考8人锁定清北 网友:真是学霸扎堆_每日观点
俄总统普京发表电视讲话 感谢全国民众和社会的团结 世界聚焦
惠普对部分价值多至10亿美元的已发售票据启动了现金收购要约。
(中国3分钟第413期)全球文明倡议:让世界文明异彩纷呈
今日热闻!北京劳动者之歌|王广征:在平凡的岗位上诠释不平凡的坚守
安徽道路交通事故社会救助基金省级统筹管理启动-当前要闻
潘焯鸿揭港大建筑现“蜂窝状”,港大:正与承建商严肃跟进 全球讯息
福彩3D第23167期晒票来了,来日可期,愿你前程似锦|每日时讯
【行情】国产厂商首次超过三星!最新OLED屏幕市场份额出炉
全球今日报丨阿瑞斯如何进行下载,阿瑞斯最新官方下载安装地址,可白嫖时长加速器
扬州中考成绩什么时候出来2023年 世界要闻
天天时讯:2023北京西山永定河文化节开幕
扬州海事局多形式庆祝“世界海员日” 全球报资讯
马力刺客|全新标杆! 奥迪RS e-tron GT轮上功率实测-全球快看点
市场监管总局回复关于软件规范问题_当前滚动
世界观速讯丨麻醉科医生收购迷药“翻墙”贩卖,致一被害人遭强奸
国内油价明晚或迎来小涨 预计上调 0.05-0.06 元 / 升
立方制药:6月21日公司高管汪琴减持公司股份合计4000股
今日要闻!第二届中国报业创新发展大会今日开幕,羊城晚报再获殊荣!
焦点资讯:今年“小升初” 6所民办初中电脑派位!24所民办初中注册入学、直接录取
比亚迪汉、唐系列累计销量突破一百万辆_天天微头条
开源证券:给予华凯易佰买入评级
赖清德8月过境美国?赖办:迄今无出访规划
橡胶短期承压调整
非法运输爆炸性危险物质 一男子被三亚警方拘留-世界热消息
金三江(301059):召开2023年第一次临时股东大会的通知的更正公告
当前焦点!中暑都有哪些症状?如何防范中暑?专家解答→
【地评线】中安时评:为青年“拓岗增位”,促进高质量充分就业
世界快报:16球16助攻!官方:梅西当选22/23赛季法甲最佳外籍球员
【全球热闻】曾被漫威定为钢铁侠二代,却被粉丝喷改名,这个角色现在来了!
杭州地铁公安辅警待遇怎么样?
世界即时看!虾的营养价值及功效视频_虾的营养价值及功效
孤雨下午(06.27)主要商品操作建议
2023年6月深圳市宝安区选聘教师试用期多久_当前头条
龙岗区龙岭学校2023年秋季插班生招生公告
世界快资讯:《上古卷轴 6》更新对《辐射 5》来说是个坏消息
华能汇流河发电厂350MW+50MW热电联产项目相关的3项中标结果 天天要闻
西城区西长安街街道“父母食堂”开进党群服务中心
中国鸡蛋市场调查(中国鸡蛋交易网)
一品红:参股公司首个双靶点分子胶新药临床试验(IND)获批
青海:端午假期民航运送旅客7.86万人次
环球简讯:熵是什么时候发现的_熵是什么
secx等于什么 secx等于什么图像|当前速读
重庆法院近五年受理毒品犯罪案件呈逐年下降态势
世界资讯:爱奇艺营收逆跌,依然难受市场“待见”
中国小将殷若宁斩获高尔夫大满贯赛冠军_全球滚动
为深厚友谊握手 对盛会充满期待──天津夏季达沃斯论坛欢迎会侧记|环球精选
月均增长达“百亿级” 六问快递业如何实现提速发展
河南安阳:多彩民俗过端午-环球热点
田东街道_关于田东街道介绍
CCTV16直播深足VS成都!足协杯两支败军相遇,陈涛率队保级 徐正源冲击亚冠|全球快资讯
花湖湿地黑颈鹤从400只增至2000只的背后
危地马拉总统选举将举行第二轮投票
6月26日芝加哥商业交易所(CME)金属类商品成交量报告已在金十数据中心更新!欢迎点击查看
是累犯又打人轻伤该怎样判 世界今头条
环球热消息:6月27日潍坊中冕硫酸铵价格动态
英伟达与云计算巨头Snowflake达成合作
2023癸卯年1公斤金制纪念币价格(2023年06月27日)
世界观察:锂电池之父、诺贝尔化学奖得主古迪纳夫去世,享年 100 岁
【天天新要闻】解码|今天惠州这两个高铁站为什么改名?
世界视讯!美国禁毒,内病外治行不通(钟声)
今日白银价格行情查询(2023年6月26日)
以案说法丨买到“假酱干”后要求10倍赔偿,法院这样判
天天热点!白莲蓉是什么 白莲蓉是什么材料
幸运倍多分|转出好运交响曲 找好房拿好礼两相宜
包装纸包书礼物,礼物书包装纸包法?
焦点短讯!怎么设置360极速浏览器为默认浏览器_怎样设置360极速浏览器为默认浏览器
青田全力打响“水上运动之城”特色品牌
西安地铁再添新线路 运营里程突破300公里 全球速讯
金信诺:高速裸线及应用于服务器内部的高速组件已经量产并批量供应浪潮、联想等主流服务器厂商
当前聚焦:天风证券:绿氢平价可期,下一个从0-1行业的投资机会
全球球精选!中国目前单身男女比例(中国单身男女比例)
环球热推荐:央企红利50ETF(560700)拉升1.34%,多只权重股飘红,鲁西化工涨近3%
枕草子哪个出版社(草枕 2018年中国华侨出版社出版的图书) 当前视讯
天天看热讯:美国印第安纳州遭龙卷风袭击 造成至少1死1伤
今日播报!6月26日基金净值:南方匠心优选股票A最新净值0.6941,跌1.01%
第六批月球科研样品发放:16家机构获得12328.8mg 环球观点
当前热讯:圣安地列斯作弊器(cs1 6作弊器007)
6月26日基金净值:鹏华环保产业股票最新净值3.996,涨0.86%_微资讯
【全球时快讯】realme oppo系统一样吗_realme系统和oppo是一样的吗简介介绍
流放到边关 流放边塞
当了10年副局长的“老公安”,被开除党籍!曾因特大交通事故被政务记过
建筑起重设备安全操作实用技术 全球实时
浙江大学回应努某某被留校察看 浙江大学决定给予努某某开除学籍处分 世界微头条
机器人工程技术人员:让机器人“吃”得更少 “干”得更多_每日短讯
容貌面指数_关于容貌面指数介绍
amd r530显卡_amd r530|世界报道
形容不为外界所干扰的成语_扰的成语
二手车购买指南:阿斯顿·马丁 V8
北回归线南回归线视频_北回归线南回归线
媒体解读:第三期“临沂保”保障责任内容及赔付标准|每日报道
【天天聚看点】园林绿化工程施工及验收规范最新_园林绿化工程施工及验收规范
全球看点:怎么才能看nba免费直播_如何在网上看免费的NBA直播简介介绍
dnf负重上限属性有用吗_DNF如何增加负重简介介绍_环球快消息
西北工业大学张艳宁教授团队获CVPR 2023最佳学生论文奖 全球头条
全省自然资源系统开展全国“土地日”宣传活动 全球百事通
全球观点:张家界市委党史研究室深入吉首大学张家界校区调研高校学生党史学习情况
人民币双柜台模式首周日均成交额约1.97亿元
广东戒毒“一基地一中心”在横琴揭牌_世界观热点