第46篇 WebRTC及点阵笔及PHP研究(九)
一、WebRTC研究
1.1 呼叫挂断
用户只有挂断了,还可以呼叫别的用户(类似打电话)。
1.2 完成信令服务器
信令服务器不加SSL的话是不安全的,WebSocket协议支持SSL,类似HTTP支持HTTPS。你可以在连接到服务器时,通过简单地使用wss://来开启这个功能。
1.3 WebSockets
WebSockets的好处是它为浏览器带来了双向通信。WebSockets的几个困境:
a.网络防火墙
在理想情况下,WebSockets是可靠的,但在代理设置的情况下,会变得不稳定,比方说虚拟专用网络(VPN)的额外开销或复杂的防火墙可导致连接的成功率急剧下降。
b.WebSockets信令服务器
在面对一个真实的网络环境时,使用WebSockets做信令服务器会有停顿,所以,因网络问题不得不做备选方案。
1.4 XMPP
XMPP是一个即时通信协议,它的目标是实现即时通信、用户在线和通讯录。
1.5 SIP
SIP:会话初始协议,它是一个致力于移动网络和电话系统的信令协议。
1.6 offer
在信令中,操作的顺序是offer,answer,然后互相发送候选直到连接成功。
二、把客户端连接到一起
2.1 客户端应用
客户端应用的目标是让不同地方的用户互相连接并进行通信。
2.2 获取一个连接
首先要做的是与信令服务器之间创建连接。
2.3登陆到应用程序
使用唯一的用户名登陆是与服务器的首次交互行为。它用来识别我们的身份,同时给别的用户一个唯一的标识来呼叫我们。
2.4 开始一个对等连接
首先要startCollection,因为startCollection方法是任何WebRTC连接的第一步。接下来:
a.从相机中获取视频流
b.验证用户的浏览器是否支持WebRTC
c.创建RTCPeerConnection对象
2.5 发起通话
我们可以和远程用户发起通话。首先发送offer给另一个用户来开始整个过程,一旦用户得到这个offer,他将创建一个响应并开始交换ICE候选,直到成功连接到服务器。
2.6 检测通信
调试实时应用是非常困难的。建议用chrome检查网络通信。
2.7 挂断电话
通信结束要挂断电话,挂断电话时要通知其他用户,我们试图关闭通信。当触发挂断事件时,首先需要通知服务器我们不再进行通信。接着,需要告诉RTCPeerCollection进行关闭,这将停止发送数据流给其他用户。最后,再次设置连接,把连接实例设置为打开状态,以便我们接受新的通话。
三、使用WebRTC发送数据
3.1任意数据
WebRTC擅长进行数据传输,不仅仅是音频和视频流,还包括我们希望的任意数据类型。
3.2流控制传输协议和数据传输
目前传输常用的是TCP连接,即使用如AJAX和WebSockets技术将数据发送到服务端,并在另一端接收。WebRTC对等连接中使用流控制传输协议(SCTP)作为数据传输的方式。
SCTP位于数据传输层安全协议(DTLS)之上,每个WebRTC连接都实现了它并且为数据传输提供出口绑定到数据通道上。所有这些都位于UDP之上,它为WebRTC数据提供基本的传输方法。协议顺序如下:
SCTP特点如下:
a. 传输层的安全性,基于DTLS。
b. 传输层可以运行在可靠的或不可靠的模式中。
c. 传输层可以担保或者无担保数据包顺序。
d. 数据是面向消息进行传播的,允许消息分解传输,在接收端重组。
e. 传输层支持流量和阻塞协议。
注:SCTP解决了TCP的一些问题,同时利用了UDP的传输能力。
3.3RTCDataChannel对象
数据通道会存在于以下几种状态中:
连接中:这是默认状态,当数据通道等待一个连接。
开启:这种状态下,连接已经被建立,可以进行通信。
关闭中:通道正在被销毁。
关闭:这种状态下,通道关闭,无法进行通信。
3.4数据通道选项
选项由以下几部分组成:
reliable:设置消息传递是否进行担保。
ordered:用来设置消息的接受是否需要按照发送时的顺序。
maxRetransmitTime:设置消息发送失败时,多久重新发送。
protocol:设置强制使用其他子协议,但当用户代理不支持该协议时会报错。
negotiated:此选项用来设置开发人员是否有责任在两边创建数据通道,还是浏览器来自动完成这个步骤。
id:这个用来设置通道的唯一标识,可以在多通道时进行区分。
注:以上主要使用的配置项是reliable和ordered,当设置为true时数据通道表现更像TCP,设置为false时,表现更像UDP。
3.5发送数据
发送数据包,目前常用的数据通道的类型如下:
String:JavaScript基本的字符串。
Blob:一种文件格式的原始数据。
ArrayBuffer:确定数组长度的数据类型。
ArrayBufferView:基础的数据视图。
3.6加密与安全
加密技术在对等应用中应满足以下要求:
信息在传输过程中被窃取,无法进行读取。
第三方不能够伪造消息,使消息看上去像是接收者发送的。
消息在传输给另一方时不能进行编辑。
加密算法的快速性,以支持客户端之间的最大带宽。
四、bug处理
4.1websocket中的ws库bug
WebSocket connection to ‘ws://localhost:8888/’failed:
wscat不是内部命令或外部命令,也不是可运行的程序或批处理文件。
解决方案:说明没安装wscat插件,安装命令如下:
npm install -g wscat
再次运行:wscat –c ws://localhost:8888/ 就可以了。
4.2 WebSocket
WebSocketprotocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。一开始的握手需要借助HTTP请求完成。
在 WebSocketAPI,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
五、点阵笔对接一对一
这个目前需要一个插件对接一对一,会C++才行。
六、PHP
6.1 PHP的另一种标记方式
常用:<?php ?>
不常用: <script language=“php”> </script>
6.2 html中字滚动效果
代码:
6.3 php控制html
代码如下:
效果如下:
注释掉:$hdw=111;效果如下:
由此可知:php能控制html。
2016年9月22日星期四
第46篇 WebRTC及点阵笔及PHP研究(九)相关推荐
- 第45篇 WebRTC及点阵笔研究(八)
一.点阵笔配置流程 a.安装驱动程序 b.按照说明文档安装一系列软件 c.按照手册打开驱动程序 d.打开drawex.html 注:之前要进行点阵笔配对,PC上要有蓝牙. 已配对要变成已连接: 一直变 ...
- [Qt教程] 第46篇 进阶(六) 国际化
[Qt教程] 第46篇 进阶(六) 国际化 楼主 发表于 2013-10-7 09:23:45 | 查看: 109| 回复: 0 国际化 版权声明 该文章原创于Qter开源社区 导语 在第2篇中讲述 ...
- ios APP 安全渗透测试(共46篇)
翻译自一位外国大牛的系列文章,共46篇,整理不易,内容详实,只提供给需要的人看.懂,请下载. 文件:n459.com/file/25127180-479629106 访问密码:551685 以下内容无 ...
- 第46篇 Android Studio实现生命数字游戏(一)数据分析
第46篇 Android Studio实现生命数字游戏(一)数据分析 1.数据 1.1.生日 1.2.生日数 1.3.天赋数 1.4.命数 1.5.星座数 2.数字对应的解析 1.数据 数据是在生命数 ...
- 【Flutter 问题系列第 46 篇】如何修改 Flutter 项目的包名
这是[Flutter 问题系列第 46 篇],如果觉得有用的话,欢迎关注专栏. 如果你开发过 Android 原生的项目,修改项目的包名只需要修改 android - app - build.grad ...
- 智能书写笔(点阵笔)打造纸屏交互解决方案
智能手写笔即点阵笔,它是一种新型的纸媒.数媒的书写同步工具.点阵笔前端的高速摄像头随时捕捉笔尖的运动轨迹,识别纸张上印刷的点阵图案,同时压力传感器将压力数据传回数据处理器,最终将信息通过蓝牙传输给带屏 ...
- php 点阵笔一对一平台,智慧课堂,从一支点阵笔开始
王老师是初中二年级的代数老师,其所在的实验中学,是本市较早一所引进智慧课堂的学校,自从课堂智能化改造完成后,教室里再也看不到粉笔末似飞雪的景象了,每次走进教室,首先映入眼帘的就是电子大屏黑板和点阵笔, ...
- CVPR 2023上46篇AIGC论文和代码
刚刚过去的几个月,无疑是生成式AI爆发的奇点. 说到生成式AI,就不得不提到AIGC.AIGC全称为AI-Generated Content,指基于预训练大模型.生成式对抗网络(GAN)等人工智能技术 ...
- NBT-19年2月刊4篇35分文章聚焦宏基因组研究
新年4篇35分文章聚焦宏基因组研究 Nature Biotechnology (NBT,自然生物技术,IF 35.7)在2019年2月刊(https://www.nature.com/nbt/volu ...
最新文章
- php 使用netstat -an,netstat -an 查看端口
- Nginx错误日志说明
- 关于超链接的四个伪类的一个问题(顺序问题)
- 清空mysql一个库中的所有表_mysql怎样清空一个数据库中的所有表_MySQL
- 《金色梦乡》金句摘抄(二)
- 【HDU - 5900】QSC and Master(区间dp)
- 挑战Textarea——把textarea中的HTML写入数据库
- [Err] 1093 - You can't specify target table 's' for update in FROM clause
- Silverlight5 RC调用Win32API
- 智能优化算法:水基湍流优化算法-附代码
- 80后的我们为什么不结婚?
- 安装zsh-autosuggestions zsh-syntax-highlighting
- 在线教学质量评价系统java web_基于JavaWeb的教师教学质量评价系统
- 想用html5改写妄撮
- Yoshua Bengio:注意力是“有意识”AI的核心要素
- 数据、数据库、数据库管理系统、数据库系统的概念。
- 菜鸟教程的Linux命令大全
- FPGA:逻辑函数的卡诺图化简法
- Win10连接上了wifi,但显示Internet无网络访问权限的解决方法
- 基于GIS技术的城市交通管理应用