Code Monkey home page Code Monkey logo

venus's Introduction

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上,直接文字聊天,语音留言都没有问题,但是你们直接视频聊天大概率会失败。

    如果你和对方在同一局域网内,使用的服务器在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服务器,主要负责好友关系处理,聊天这样的服务。

如何使用docker 运行?

docker 的使用很简单。 使用 docker push xiaojiaqi/venus:0.1.0 下载镜像!

https://cloud.docker.com/repository/registry-1.docker.io/xiaojiaqi/venus

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

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

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

venus's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.