闲的无聊,写了一个 P2P 聊天网站 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wheelg
V2EX    分享创造

闲的无聊,写了一个 P2P 聊天网站

  •  
  •   wheelg 2022-03-10 23:49:45 +08:00 5467 次点击
    这是一个创建于 1360 天前的主题,其中的信息可能已经有所发展或是发生改变。

    辞职完在家摸鱼,用 peerjs 摸了一个 P2P 的聊天页面 Peek,静态网页托管在 Github Pages ,无中心服务器,或者说服务器就是 peejs 官方的服务器,能白嫖绝不掏钱。

    进入页面后稍等片刻会看到本设备的 peer id ,把 id 发送给另一台设备填入后点击 Connect 就可以连接了,点击头像可以修改昵称,reset 按钮用于清空数据,解决奇奇怪怪的 bug 。目前的功能只有简单的文字聊天和文件传输,视频通话做了但没有完全做好,可能会有许许多多奇怪的 bug ,需要两台设备同时在线(适合拥有两台设备并且闲的蛋疼的人左右互搏),建议使用 chromium 类浏览器访问,高级版本的 iOS safari 也行。

    目前局域网连接速度还行,其他网络环境下就十分堪忧了,可以分享出自己 id 让其他人试一试,说不定就志同道合了呢。

    以后可能会继续优化,但是估计也没什么时间了,欢迎 star

    41 条回复    2022-03-13 23:47:33 +08:00
    wheelg
        1
    wheelg  
    OP
       2022-03-11 00:02:21 +08:00
    做这个的初衷是有时想和自己的朋友传一些比较私密的文件,担心上传到聊天服务器有风险,于是想着能不能用 webrtc 相关技术实现私下的点对点通信,发现 peerjs 还挺不错的,于是动手撸了一个页面出来。
    im67
        2
    im67  
       2022-03-11 01:58:46 +08:00
    嗯……搞个随机在线 ID (摇一摇?)
    Vincent103
        3
    Vincent103  
       2022-03-11 08:35:50 +08:00
    自己一台电脑,用两个浏览器也能聊
    gongquanlin
        4
    gongquanlin/strong>  
       2022-03-11 08:53:18 +08:00
    685e787f-cd54-46b0-a398-9990585b3635
    在线等
    aviator
        5
    aviator  
       2022-03-11 08:58:18 +08:00
    很棒棒,还能传文件和视频
    pxiphx891
        6
    pxiphx891  
       2022-03-11 09:18:20 +08:00
    @wheelg 两个不同内网的机器 peejs 官方的服务器会帮忙转发吗?
    pxiphx891
        7
    pxiphx891  
       2022-03-11 09:20:08 +08:00
    @wheelg 提两个建议:
    1. 配色太丑
    2. 需要按回车键发送消息
    toan
        8
    toan  
       2022-03-11 09:29:13 +08:00
    很不错,有使用场景
    twinsdestiny
        9
    twinsdestiny  
       2022-03-11 09:30:18 +08:00
    不能回车发送。。。
    3img
        10
    3img  
       2022-03-11 09:32:09 +08:00
    89f18ed6-73ad-4151-992e-c6bc9ad721fc
    wanguorui123
        11
    wanguorui123  
       2022-03-11 09:32:19 +08:00
    有点慢
    misaka19000
        12
    misaka19000  
       2022-03-11 09:38:35 +08:00   1
    连不上
    winglight2016
        13
    winglight2016  
       2022-03-11 10:45:39 +08:00
    我也搞过这种,还能视频聊天,不过玩了两下就没啥意思了,毕竟你还得推广给所有的联系人
    deplivesb
        14
    deplivesb  
       2022-03-11 11:14:46 +08:00
    feaa27ab-81fe-46e8-8ee1-7f3746bc85e8
    在线等
    alexzsh
        15
    alexzsh  
       2022-03-11 11:49:09 +08:00
    reset 文案修改下吧
    “This will clear all user infomation, Are your suer ?”
    alexzsh
        16
    alexzsh  
       2022-03-11 11:49:33 +08:00
    94da9ea4-5d01-4972-ab93-57e382a4faf5
    lvsijun
        17
    lvsijun  
       2022-03-11 11:51:55 +08:00
    在线等,17801554-a19f-4c99-a6bc-7a8fe154ec0b ,hhhhhhh
    wheelg
        18
    wheelg  
    OP
       2022-03-11 12:12:18 +08:00 via iPhone
    @pxiphx891 服务器只是起到一个拉线的作用,两个设备连接后就是直连了,不会再被服务器转发,所以局域网连接会比不同内网连接快
    wheelg
        19
    wheelg  
    OP
       2022-03-11 12:18:15 +08:00 via iPhone
    对了,GitHub 链接是这个 https://github.com/peek-transfer/peek-transfer.github.io ,欢迎位在下面提提 issue 改进意见什么的,v 站上来看不太及时。
    wheelg
        20
    wheelg  
    OP
       2022-03-11 12:18:43 +08:00 via iPhone
    @twinsdestiny 晚点加上
    wheelg
        21
    wheelg  
    OP
       2022-03-11 12:19:12 +08:00 via iPhone
    @alexzsh 收到
    wheelg
        22
    wheelg  
    OP
       2022-03-11 12:19:54 +08:00 via iPhone
    @pxiphx891 配色真的无能为力了只能随便拉几个颜色这样
    wheelg
        23
    wheelg  
    OP
       2022-03-11 12:21:39 +08:00 via iPhone
    @im67 这样就需要用到服务器了,而且感觉有审查风险,目前就做一个私人交换 ID 互传文件的场景就行。
    laLuna
        24
    laLuna  
       2022-03-11 13:03:18 +08:00
    14f52fbc-8e16-48a5-9a08-b480e8e56dec
    duke807
        25
    duke807  
       2022-03-11 13:15:00 +08:00 via Android
    @wheelg #1
    和朋友私密文件可以考用 pwa 加密工具:
    t/832302
    duke807
        26
    duke807  
       2022-03-11 13:17:43 +08:00 via Android
    至於 p2p ,要做就做好一,譬如支持十人的,除了像和 mic ,要同支持桌面和播放的音。
    linteresting
        27
    linteresting  
       2022-03-11 13:36:41 +08:00
    9562d7ef-3333-437b-9588-cc8c5f62ee53 在线等
    Glauben
        28
    Glauben  
       2022-03-11 13:41:31 +08:00
    @wheelg 这在国内网络环境很难通用吧,在大多是对称 NAT 的情况下,你怎么不经过服务器转发。
    molvqingtai
        29
    molvqingtai  
       2022-03-11 14:02:09 +08:00 via Android
    @wheelg 最近想做一个类似的,如果 browser to browser 不需要服务器拉线这一步操作可以实现通信吗,就整个流程都不需要服务器
    MonkeyJon
        30
    MonkeyJon  
       2022-03-11 14:45:48 +08:00
    发消息绑定一下回车,谢谢
    godfunc
        31
    godfunc  
       2022-03-11 14:49:15 +08:00
    等 5930067e-b212-40f3-b325-f77501acedfa
    darryZ
        32
    darryZ  
       2022-03-11 14:59:30 +08:00
    @godfunc 别等了,连不上
    wheelg
        33
    wheelg  
    OP
       2022-03-11 15:11:21 +08:00
    @molvqingtai 应该是不行的,需要一个服务器做桥梁让双方互相通信一次才行
    wheelg
        34
    wheelg  
    OP
       2022-03-11 15:12:43 +08:00
    @2435043xia 我试了一下,使用移动数据的话偶尔能连接上,如果连的是不同的 wifi 大概率连不上,不过对于我来说使用场景是足够了
    duke807
        35
    duke807  
       2022-03-11 15:43:25 +08:00 via Android   1
    @molvqingtai
    可以的,搜:serverless webrtc
    molvqingtai
        36
    molvqingtai  
       2022-03-11 15:48:22 +08:00
    @duke807 #35 感谢,我研究研究
    darkengine
        37
    darkengine  
       2022-03-11 15:49:30 +08:00
    连接不同的 wifi 大概率连不上?!古时候有个软件叫飞鸽传书。。。
    iovekkk
        38
    iovekkk  
       2022-03-11 15:49:59 +08:00
    能群聊吗
    HeyWeGo
        39
    HeyWeGo  
       2022-03-11 15:50:47 +08:00
    把~这串 id 优化下~
    StephenZzz
        40
    StephenZzz  
       2022-03-11 16:28:37 +08:00
    dd3fc67a-dce5-4959-96e8-6c0071aaa6e0
    douyacun
        41
    douyacun  
       2022-03-13 23:47:33 +08:00
    之前学习了 webrtc 传文件,https://www.douyacun.com/p2p/send

    4G/5g 网络就穿透不了,感觉用途受限。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2471 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 04:29 PVG 12:29 LAX 20:29 JFK 23:29
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86