V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
wheelg
V2EX  ›  分享创造

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

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

    辞职完在家摸鱼,用 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  
       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 加密工具:
    https://www.v2ex.com/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   ·   实用小工具   ·   1300 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:53 · PVG 01:53 · LAX 09:53 · JFK 12:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.