1
registerrr 2022-10-25 10:32:50 +08:00
webrtc
|
2
seth19960929 2022-10-25 10:35:17 +08:00
@registerrr 你这个也需要服务端返回 JS 去执行吧
我猜楼主是说完全不需要服务端的. 我能想到的估计也就 c2c 内网有可能 |
3
thinkershare 2022-10-25 10:36:11 +08:00
没有办法
|
4
wangtian2020 2022-10-25 10:42:35 +08:00
webrtc
看哔哩哔哩直播的时候,如果用户的浏览器支持 webrtc ,哔哩哔哩会控制在用户之间 P2P 节约大量视频带宽 通信传送视频信息,和传送文本数据是一样的 |
5
ysc3839 2022-10-25 10:45:45 +08:00
WebRTC 的 P2P 模式好像也要服务器转发一些数据才能建立连接的。
|
6
kuro1 2022-10-25 10:48:45 +08:00
mDNS
|
7
duke807 2022-10-25 10:49:44 +08:00
serverless-webrtc
|
8
NessajCN 2022-10-25 10:53:09 +08:00
@seth19960929 理论上是可以的,你本地写 html+js 脚本,手动生成一个 sdp 作为 offer 。再去另一个浏览器那里把 offer 的 sdp 复制粘贴过来写死在 js 代码里生成 answer 。再把 answer 的 sdp 复制粘贴到 offer 那里,就能连上了。不需要服务端..
|
10
nVic 2022-10-25 11:23:07 +08:00
网络环境?内网?大内网?公网?互联网?中间有没有单独的 dns 服务器?
|
11
yufeng0681 2022-10-25 11:38:15 +08:00
访问同一个网址, 然后在网址上的文本框里 聊天
比如: 1 、在 在线 excel 的表格里面聊天 2 、在 在线 word 文档里聊天 3 、可以在博客留言区聊天(不实时,可能会被其他人看到) |
12
SunsetShimmer 2022-10-25 11:45:40 +08:00
|
13
SunsetShimmer 2022-10-25 11:48:25 +08:00
个人认为,除非两端都在公网且知道对方的 IP ,否则总会有一个中转(利用公开服务)。
|
14
ClericPy 2022-10-25 12:16:11 +08:00 via Android
火狐当年貌似有个类似的东西... 你通信干嘛
|
15
hoshan185 2022-10-25 12:22:06 +08:00
那这样两端里面起码要有一个可以在公网上访问的吧
|
16
jeesk 2022-10-25 12:37:06 +08:00
不行, 首先浏览器必须走网络协议, 那么这个网路协议怎么来, 需要网络吧, 那么就需要第三方服务器(路由器也是)? 如果是 app 之间可以尝试 wifi direct 或者蓝牙 p2p .
|
19
cy1027 2022-10-25 14:15:00 +08:00
单从通信的原理上来讲,你纯内网的可以广播建立链接,只要你是内网到外网,没有第三方怎么建立链接呢?
|
20
jones2000 2022-10-25 14:39:14 +08:00
做插件点对点值连, 局域网可以用命名管道或 udp 广播。
|
21
meeop 2022-10-25 14:55:31 +08:00
有的,我最近正在写这方面的库
首先要抽象一下,是不是浏览器不重要,这个问题是如何实现两个客户端之间直连 分场景: 1 内网环境或者有公网 ip 或者可直连 ipv6,两个客户端直接拿对方 ip 端口连接就行 2nat 网络类型支持内网穿透(通常都支持),需要一个中介服务器协调 nat 穿透,客户端之间连接成功后就是直连,不需要中介服务器了.这个中介服务器如果是 stun 协议的话,可以自荐,网上也有免费的 3 最差的情况无法穿透 nat 直连,就需要代理,有很多种协议,这种一定需要一个服务器做转发 4 相对成熟解决方案就是 webrtc,这个原理就是上述 123 的整合,需要自建服务器端 5 通解还是需要有公网 ip(v4 或者 v6) |
22
ArthurSS 2022-10-25 14:56:36 +08:00
@NessajCN 可是你不知道对方 ip ,如何连?你的 sdp 本质上也是要通过 TURN 服务去中转吧,类似#13 所说
|
24
julyclyde 2022-10-25 15:23:48 +08:00
mDNS 可以相互发现
我不懂怎么在浏览器里“监听” |
25
xiqishow 2022-10-25 15:26:24 +08:00
|
27
NessajCN 2022-10-25 15:36:24 +08:00
@ArthurSS turn 是另外一码事了,跟 signaling 没关系。sdp 里面包含了 ip ,只是这个 ip 如果无法从公网访问那自然是连不通的需要走 turn 。不过楼主都说了内网了那就不存在需要 turn 中转啊,两边 sdp 都是内网 ip ,本来就能互相连通。
|
28
flyqie 2022-10-25 18:32:37 +08:00 via Android
这得看你是不是要求完全不用服务端(人肉也算)。
完全不用的话,如果你不能通过各种奇怪的方式(浏览器插件什么的)开一个可被内网访问的固定服务端口,那无解。 不完全的话,可以搞个服务(不管是不是人肉)做个 signal server ,然后走 webrtc 。 |
29
killva4624 2022-10-25 18:40:14 +08:00
理论上是可以的。
对端发现:靠手动填 IP ,或者广播自己的地址给特定端口(我记得以前有个叫 FeiQ )的。 |
30
kwh 2022-10-25 18:42:07 +08:00
可以吧???我就通过 ipv6 地址从互联网访问到了我电脑本地。
|
31
yueji 2022-10-25 18:48:15 +08:00
php websocket 开端口 + 扫同网段 相同端口
谁先扫到就 connect |