一、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研究(九)相关推荐

  1. 第45篇 WebRTC及点阵笔研究(八)

    一.点阵笔配置流程 a.安装驱动程序 b.按照说明文档安装一系列软件 c.按照手册打开驱动程序 d.打开drawex.html 注:之前要进行点阵笔配对,PC上要有蓝牙. 已配对要变成已连接: 一直变 ...

  2. [Qt教程] 第46篇 进阶(六) 国际化

    [Qt教程] 第46篇 进阶(六) 国际化 楼主  发表于 2013-10-7 09:23:45 | 查看: 109| 回复: 0 国际化 版权声明 该文章原创于Qter开源社区 导语 在第2篇中讲述 ...

  3. ios APP 安全渗透测试(共46篇)

    翻译自一位外国大牛的系列文章,共46篇,整理不易,内容详实,只提供给需要的人看.懂,请下载. 文件:n459.com/file/25127180-479629106 访问密码:551685 以下内容无 ...

  4. 第46篇 Android Studio实现生命数字游戏(一)数据分析

    第46篇 Android Studio实现生命数字游戏(一)数据分析 1.数据 1.1.生日 1.2.生日数 1.3.天赋数 1.4.命数 1.5.星座数 2.数字对应的解析 1.数据 数据是在生命数 ...

  5. 【Flutter 问题系列第 46 篇】如何修改 Flutter 项目的包名

    这是[Flutter 问题系列第 46 篇],如果觉得有用的话,欢迎关注专栏. 如果你开发过 Android 原生的项目,修改项目的包名只需要修改 android - app - build.grad ...

  6. 智能书写笔(点阵笔)打造纸屏交互解决方案

    智能手写笔即点阵笔,它是一种新型的纸媒.数媒的书写同步工具.点阵笔前端的高速摄像头随时捕捉笔尖的运动轨迹,识别纸张上印刷的点阵图案,同时压力传感器将压力数据传回数据处理器,最终将信息通过蓝牙传输给带屏 ...

  7. php 点阵笔一对一平台,智慧课堂,从一支点阵笔开始

    王老师是初中二年级的代数老师,其所在的实验中学,是本市较早一所引进智慧课堂的学校,自从课堂智能化改造完成后,教室里再也看不到粉笔末似飞雪的景象了,每次走进教室,首先映入眼帘的就是电子大屏黑板和点阵笔, ...

  8. CVPR 2023上46篇AIGC论文和代码

    刚刚过去的几个月,无疑是生成式AI爆发的奇点. 说到生成式AI,就不得不提到AIGC.AIGC全称为AI-Generated Content,指基于预训练大模型.生成式对抗网络(GAN)等人工智能技术 ...

  9. NBT-19年2月刊4篇35分文章聚焦宏基因组研究

    新年4篇35分文章聚焦宏基因组研究 Nature Biotechnology (NBT,自然生物技术,IF 35.7)在2019年2月刊(https://www.nature.com/nbt/volu ...

最新文章

  1. php 使用netstat -an,netstat -an 查看端口
  2. Nginx错误日志说明
  3. 关于超链接的四个伪类的一个问题(顺序问题)
  4. 清空mysql一个库中的所有表_mysql怎样清空一个数据库中的所有表_MySQL
  5. 《金色梦乡》金句摘抄(二)
  6. 【HDU - 5900】QSC and Master(区间dp)
  7. 挑战Textarea——把textarea中的HTML写入数据库
  8. [Err] 1093 - You can't specify target table 's' for update in FROM clause
  9. Silverlight5 RC调用Win32API
  10. 智能优化算法:水基湍流优化算法-附代码
  11. 80后的我们为什么不结婚?
  12. 安装zsh-autosuggestions zsh-syntax-highlighting
  13. 在线教学质量评价系统java web_基于JavaWeb的教师教学质量评价系统
  14. 想用html5改写妄撮
  15. Yoshua Bengio:注意力是“有意识”AI的核心要素
  16. 数据、数据库、数据库管理系统、数据库系统的概念。
  17. 菜鸟教程的Linux命令大全
  18. FPGA:逻辑函数的卡诺图化简法
  19. Win10连接上了wifi,但显示Internet无网络访问权限的解决方法
  20. 基于GIS技术的城市交通管理应用

热门文章

  1. 学生个人网页制作html(附源码)
  2. macos使用sshfs_如何像冠军一样使用macOS的Spotlight
  3. docker容器和宿主机的主机名映射失败
  4. Python机器学习:数据科学,机器学习和人工智能的主要发展技术趋势概述
  5. 3.29 运营人必备的15个工具包【玩赚小红书】
  6. Hotspot虚拟机- 垃圾收集算法和垃圾收集器
  7. 计算机网络:CSMA协议
  8. sql2012 ssrs_如何使用SQL Server Reporting Services(SSRS)增强报告
  9. BLDC驱动原理(不根据霍尔换相)
  10. 如何卸载jupyter