文章
关于WebRTC的一些技术总结和记录
什么是 WebRTC? WebRTC(Web Real-Time Communication)是一种允许网页和应用程序进行实时通信(RTC)的技术。它支持点对点的视频、音频和数据传输,无需安装额外的插件或应用程序。WebRTC 的主要特点如下: 实时通信:WebRTC 允许用户通过浏览器直接进行语音和视频通话,以及数据共享。 点对点连接:WebRTC 可以直接在两个用户间建立连接,实现数据的直接传输,而非通过中心服务器。这样做可以减少延迟和提高通信效率。 兼容性:它是一个开放标准,被大多数现代浏览器支持,包括 Chrome、Firefox、Safari 和 Edge。 安全性:所有 WebRTC 组件都要求使用安全的起点(HTTPS),并对所有数据进行加密传输。 多功能性:除了音视频通话,WebRTC 还支持各种数据传输,包括文件共享和实时文本聊天。 NAT 穿透:WebRTC 使用 STUN/TURN 服务器来处理 NAT(网络地址转换)和防火墙穿透,确保不同网络环境下的设备可以相互连接。 媒体捕获和处理:WebRTC 提供了捕获本地媒体(如摄像头和麦克风输入)、处理和播放远程媒体的能力。 标准化 API:提供了一套标准的 API,方便开发者在网络应用中集成实时通信功能。 总之,WebRTC 是一种强大的实时通信技术,使得在不同平台和设备之间的音视频通话和数据共享变得简单和高效。 WebRTC 的 NAT 穿透 WebRTC 中的 NAT(网络地址转换)穿透是一个关键技术,用于在两个位于不同网络(例如家庭或企业网络)的设备之间建立直接的通信连接。NAT 穿透对于保证 WebRTC 能够在各种网络环境下正常工作至关重要。以下是 WebRTC NAT 穿透的详细介绍: 1. NAT 问题的背景 NAT 的作用:NAT 使多个设备能够共享一个公共 IP 地址,同时保持它们的内部(私有)IP 地址。这是家庭和企业网络常用的一种方法。 NAT 对 P2P 的影响:NAT 使得点对点(P2P)通信变得复杂,因为外部网络无法直接访问内部网络中的设备。 2. WebRTC 的 NAT 穿透技术 WebRTC 使用几种技术来解决 NAT 问题: a. ICE(Interactive Connectivity Establishment) 功能:ICE 是一种框架,用于收集设备的多种网络地址(候选者),并尝试通过这些地址建立连接。 候选者类型:包括本地地址、反射地址(通过 STUN 获得)和中继地址(通过 TURN 获得)。 b. STUN(Session Traversal Utilities for NAT) 用途:STUN 服务器帮助设备发现其公共 IP 地址和端口,这对于穿越 NAT 是必需的。 工作原理:设备向 STUN 服务器发送请求,服务器回应设备的公共 IP 地址和端口。 c. TURN(Traversal Using Relays around NAT) 场景:在某些复杂的 NAT 情况下,STUN 无法实现穿透,此时需要 TURN。 功能:TURN 服务器充当中继,转发两个尝试连接的设备之间的流量。 影响:虽然有效,但使用 TURN 会增加延迟和带宽消耗。 3. NAT 穿透过程 收集候选者:设备使用 ICE 框架来收集其所有可能的网络地址(本地、反射和中继)。 候选者交换:通信双方通过信令通道交换他们的 ICE 候选者信息。 连接尝试:双方尝试使用收集到的候选者信息来建立直接的 P2P 连接。 选择最佳路径:在成功建立连接后,将选择最有效的路径进行数据传输。 4. 重要性 保证连通性:NAT 穿透使得位于不同 NAT 后面的设备可以建立直接的通信连接。 提高效率:虽然使用 TURN 会增加资源消耗,但大多数情况下,ICE 和 STUN 足以成功穿越 NAT,确保通信的高效性。 5. 实践中的挑战 复杂的 NAT 类型:对于对称型 NAT,仅靠 STUN 可能无法成功穿越,需要依赖 TURN。 资源和成本:维护 TURN 服务器可能涉及额外的资源和成本。 WebRTC 通过这些 NAT 穿透技术,确保了在不同网络环境下都能够实现可靠和高效的实时通信。 ...
Cloudflare + MailChannels 使用 DKIM 发送电子邮件
独立开发者必看,cloudflare worker 其实也能发邮件,而且是比较优雅地发邮件 https://web.okjike.com/originalPost/65203d2205145f31e56e0707 什么是 DKIM ? https://www.cloudflare.com/zh-cn/learning/dns/dns-records/dns-dkim-record/ 参考1 Cloudflare Email Routing 免费邮件发送服务 https://eleduck.com/posts/4lfxE0 参考2 Cloudflare Email Routing 免费邮件发送(作为 Service 服务)用于 Workers/Pages 项目中。**** https://github.com/willin/cloudflare-send-email-service 参考3 Cloudflare + MailChannels 使用 DKIM 发送电子邮件 https://github.com/r0n9/mail 终于搞定!!!记录一下步骤,如下: 1. CloudFlare 添加域名 yourdomain.com 2. 启用Email路由: [Enable Email Routing · Cloudflare Email Routing docs](https://developers.cloudflare.com/email-routing/get-started/enable-email-routing/) 3. 本地安装 wrangler 以部署 cf worker。注意 node 版本。 sudo npm install wrangler@latest -g 在开始之前,请确保按照此处的说明设置 Wrangler。 here 4. 生成私钥 Generate the Private Key openssl genrsa 2048 | tee priv_key.pem | openssl rsa -outform der | openssl base64 -A | wrangler secret put DKIM_PRIVATE_KEY 此命令的各个部分: - openssl genrsa 2048 生成 2048 位 RSA 密钥 - tee priv_key.pem 将密钥写入 priv_key.pem 文件 - openssl rsa -outform der | openssl base 64 -A 将密钥从 PEM 格式转换为 DER 格式,然后对其进行 base64 编码(这实质上是从 PEM 格式的密钥中删除标头) - wrangler secret put DKIM_PRIVATE_KEY 将它作为秘密添加到我们的 Cloudflare Worker 中 ...
boardrop.app 隔空剪贴板
Snapdrop + Clipboard + ChatGPT = boardrop.app 隔空剪贴板 SnapDrop 局域网内点对点传输 Snapdrop: local file sharing in your browser. Inspired by Apple’s Airdrop. https://github.com/RobinLinus/snapdrop 同一网络内设备自动发现 设备间文件点对点传输 Peer2Peer Clipboard 在线剪切板 支持剪切板空间 /${board_name} 公开读写,寄存简单方便 剪贴板复制内容直接粘贴,支持文字、图片、各种文件。 限制粘贴内容最大20MB,每个剪切板空间暂存最新20条记录。 暂存6小时 ChatGPT 提供强大的技术支持 前端支持 HTML, CSS, Javascript 后端支持 Golang, Gin, Redis, Websocket 开发过程与当前进展 2024/07/05