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

搭建一个属于你自己的 微信吧

  •  
  •   firefox12 · 2019-07-06 11:16:46 +08:00 · 5146 次点击
    这是一个创建于 1727 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Venus

    曾经我尝试做一个类似~~钉钉~~的开源产品。但是在找投资的时候,被告知类似的产品很多,产品并没有太多的意义。所以它在硬盘里又躺了快 1 年吧,最后我想还是放出来吧。

    这是一款 IM 产品,它以网页版的形式提供服务,支持手机端 PC 端。它的功能包括 直接语音留言, 视频聊天,音频聊天,文字聊天,加好友等基本功能。没错,是利用网页直接进行视频聊天,语音聊天。在 webrtc 如此使用广泛的情况下,做到这点很容易。

    说说效果,在局域网里,比如在公司内部,我觉得你可以获得不亚于 QQ 微信的使用体验。视频聊天都会非常正常,效果也不错。如果是互联网上,你文字和语音留言都不成问题,如果要视频,你需要专门提供一个 stun 服务器才有可能。stun 的速度决定了你的效果。坦白地说,利用网页形式 直接进行视频聊天的条件并不成熟。但是 5G 时代,我相信这样的应用会更加容易实现

    我搭建了一个演示网站,可以直接使用

    https://www.meetyoucn.com

    网站首页

    效果大概这样!

    Watch the video]( http://www.iqiyi.com/w_19s8wf4dp5.html)

    部署

    1. 如果 我在 Internet 上部署,我需要做什么?

      首先你需要准备 SSL 证书。然后将证书分别改名为 cert.pem 和 key.pem 。覆盖项目里原有的证书。

      其次,你需要安装一个 redis 服务器作为数据库。

      下载完源码: 在本地看大概这样

      Image text

      代码的位置在 /webroot/html/js/domain.js

      修改代码里的配置

      修改代码

      然后分别重新启动 程序即可。 注意 启动离线语音消息服务器的时候,需要 修改域名部分。

      启动的样子大概这样,

      启动网站

      运行网站

      启动 信令服务器

      运行信令

      启动 IM 服务器 这个需要指定 redis 服务器的地址

      运行 IM

      启动离线语音消息服务器, 注意 这个需要指定完整的域名

      运行离线语言

      ​ 比如你的域名是 www.aaa.com 那么你启动离线语音消息服务器的命令就是

      ./upload -hostname=https://www.aaa.com

      注意必须是 https://www.aaa.com 不是 http://www.aaa.com

      注意 在 Internet 上进行视频通信,需要安装 stun,否则视频大概率是会失败的。

      比如你和对方在不同地方使用手机,服务器在 Internet 上,直接文字聊天,语音留言都没有问题,如果没有 stun 服务器,你们直接视频聊天大概率会失败。

      如果你和对方在同一局域网内,使用的服务器在 Internet 上,那么无论文字聊天,语音留言,直接视频是没有问题的。 ​

    2. 如果我有自己的域名和证书, 我想在局域网里部署,我需要做什么?

      同 Internet 部署,没有任何区别

    3. 如果你没有自己域名和证书,但是也想试试局域网部署。

      首先,确认你会安装服务器程序的 IP, 如果 它们的 Ip 是如下 IP 里的一个,那么你可以用这个程序直接安装。

      Image text

    ​ 比如我想安装到的服务地址是 192.168.0.1 那么我可以用 www01.meetyoucn.com 作为你的局域网里的域名。

    ​ 第一步 修改源码

    ​ 代码的位置在 /webroot/html/js/domain.js

    修改代码里的配置

    修改代码

    ​ 将域名修改成 www01.meetyoucn.com

    然后分别重新启动 程序即可。 注意 启动离线语音消息服务器的时候,需要 修改域名部分。

    启动的样子大概这样,

    启动网站

    运行网站

    启动 语音聊天的信令服务器

    运行信令

    启动 IM 服务器 这个需要指定 redis 服务器的地址

    运行 IM

    启动离线语音消息服务器, 注意 这个需要指定完整的域名

    启动命令将改成 ./upload -hostname=https://www01.meetyoucn.com

    运行离线语音

    然后你使用 电脑 手机 ipad 打开 https://www01.meetyoucn.com 就可以注册,运行产品了。

    浏览器版本要求

    | | 文字聊天 | 视频聊天 | 操作系统 | | :---------: | ----- | --------------- | ---- | | PC | 所有浏览器 | Firefox, Chrome | 无要求 | | Ipad/Iphone | 所有浏览器 | Safari | 12.0 | | Android | 所有浏览器 | Chrome | 无要求 |

    服务器一共有 5 个。我发现虽然开源过代码,但是我发现大家并没什么兴趣,看来一个可用的产品才是最重要了。

    • 第一个 是 网页部分,这个部分是基于一个 Layim 的产品构建的。我已经购买了源码,你可以放心在上面继续开源使用。
    • 第二个 是一个 Web 服务器, 这个你完全可以用一个 nginx 服务代替。
    • 第三个 是语音留言服务器, 当你进行语音留言的时候,它会帮你将数据存储在 web 服务器上。
    • 第四个 是信令服务器, 主要用于视频聊天时管理双方的信令交互。
    • 第五个 是 IM 服务器,主要负责好友关系处理,聊天这样的服务。

    源码的话,看大家反应吧,如果星多就逐步发布吧。

    所有前端,后端,图片都是一个人鲁的,前端的加载优化没有做。希望有好的建议和意见帮助产品提高。

    有任何问题 都可以邮件 xiaojiaqi.cn#gmail.com

    第 1 条附言  ·  2019-07-07 10:26:44 +08:00
    因为没铜币了,所以 忘了附上 代码地址


    https://github.com/xiaojiaqi/Venus
    11 条回复    2019-09-20 13:21:07 +08:00
    eastrd
        1
    eastrd  
       2019-07-06 16:37:12 +08:00 via Android
    好厉害啊!开发出这么多东西不容易,先前排支持一个!
    有没有考虑容器化+便捷部署,然后卖给公司供内部使用呢?
    firefox12
        2
    firefox12  
    OP
       2019-07-07 16:08:52 +08:00   ❤️ 1
    @eastrd 非常感谢你的建议。 昨天因为没有币了,所以没有回。

    首先 我忘记贴 Github 了

    https://github.com/xiaojiaqi/Venus


    其次按照 @eastrd 的建议, 我把它传到了 dockerhub 上,本来 dockerhub 一直是被墙的,所以我也没想过往上传,今天偶然试了一下 是可以的,就传上去了。

    docker 的使用很简单。

    3 种情况
    第一种, 我就是用镜像测试一下
    首先,假设你没有域名,那么你需要找一个 上图里的 ip,作为你的服务器。
    比如你本地服务器 ip 是 192.168.2.2 那么 www22.meetyoucn.com 就是你可以用的域名

    运行一下命令 就 ok 了
    sudo docker run --env WEBHOST=www22.meetyoucn.com -p 80:80 -p 443:443 -p 8888:8888 -p 8090:8090 -p 8091:8091 -d xiaojiaqi/venus:0.1.0
    这种玩法的缺点在于,容器重启 资料就没了。

    第二种情况, 我本地有一个 redis 服务器,我想把数据保留下来
    假设我的 redis 是 192.168.1.1 我的本地服务器还是 192.168.2.2, 那么域名就仍然是 www22.meetyoucn.com

    运行以下命令
    sudo docker run --env WEBHOST=www22.meetyoucn.com --env REDIS=192.168.1.1:6379 -p 80:80 -p 443:443 -p 8888:8888 -p 8090:8090 -p 8091:8091 -d xiaojiaqi/venus:0.1.0

    第三种情况, 我有一个自己的证书, 我想用自己的域名
    那么你需要把 cert.pem key.pem 两个挂载进系统

    差不多就是这样

    sudo docker run -v /local/cert.pem:/app/cert.pem -v /local/key.pem:/app/key.pem --env WEBHOST=www.myhost.com --env REDIS=192.168.2.30:6379 -p 80:80 -p 443:443 -p 8888:8888 -p 8090:8090 -p 8091:8091 -d xiaojiaqi/venus:0.1.0



    昨天有几个人加了 至尊宝的好友,可惜 上线太晚,抱歉。
    firefox12
        3
    firefox12  
    OP
       2019-07-07 16:10:14 +08:00   ❤️ 1
    使用 docker push xiaojiaqi/venus:0.1.0 下载镜像!

    https://cloud.docker.com/repository/registry-1.docker.io/xiaojiaqi/venus
    gaigechunfeng
        4
    gaigechunfeng  
       2019-07-09 10:32:16 +08:00
    感谢楼主,这个东西挺有技术含量的。
    我 star 了,以后如果项目需要,会告诉并送上感谢 :D
    zxcdsaz
        5
    zxcdsaz  
       2019-07-09 11:06:07 +08:00
    厉害了,star,watch 一条龙
    wedojava
        6
    wedojava  
       2019-07-09 13:09:15 +08:00
    已经 start,想问下,开发所用技术栈是?
    firefox12
        7
    firefox12  
    OP
       2019-07-09 15:31:03 +08:00
    @wedojava 就是 golang 写服务器,js 写了前端, 后来学了一下 typescript 把 js 转成了 js
    haozes
        8
    haozes  
       2019-07-09 16:30:20 +08:00   ❤️ 1
    真巧,最近也写了一个
    https://sspai.com/post/55560

    支持语音,文字,图片,视频,也用 stun,webrtc 服务,不过只支持 iOS
    cepro
        9
    cepro  
       2019-07-11 11:28:43 +08:00
    虽然类似的产品很多,但是需求也很旺盛。
    建议你去找一下细分垂直领域的机会,然后拆解或添加功能,重新包装,再推出去。
    nicoljiang
        10
    nicoljiang  
       2019-07-12 19:07:05 +08:00
    支持一下,给大佬送个币~
    hewang42
        11
    hewang42  
       2019-09-20 13:21:07 +08:00
    很厉害啊 ··· 冒昧一问
    有兴趣把这个项目制作成课程吗 shiyanlou.com
    wechat : shiyanloukecheng
    溜了溜了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2724 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:39 · PVG 23:39 · LAX 08:39 · JFK 11:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.