代码已经上传到 GitHub,如果喜欢,不妨给一个⭐️
本项目灵感来自交大x字节跳动的公开课,样式参考其demo
1,但本项目采用React
2所写,UI组件使用Antd
3
本项目实现的功能有:
本项目采用的技术有:
React & Antd
Electron
nodejs & socket.io & express
WebRTC
sqlite3
本项目测试所需要的条件根据不同的功能有所不同,主要是因为局域网中视频通话需要使用https,下面进行简单的说明,不保证
按照本说明便可以正常运行该项目
简单测试,请直接运行安装包,安装该应用程序,然后进入server下运行
yarn install --production
yarn start
在该条件下,可以运行绝大多数的功能,除发送语音&视频通话 也可以使用安装包进行安装,服务端操作同下
package.json
),执行下面的操作# 建议使用yarn
yarn install --production # 如需打包,运行yarn install
yarn start
这个时候,项目应该会在如下网址运行
yarn install --production
yarn start
运行完之后,控制台会打印出对应的端口号
此时可以访问http://localhost:3001
进行确认服务端是否运行正常,如果页面中出现access success
,说明可以访问,服务端正常运行
http://localhost:3000
(非其他局域网ip地址访问网页)条件下,可以使用语音视频功能
该环境下支持使用所有功能,视频聊天需要使用多个设备(本地两个网页也可)进行测试,在这里说明局域网配置
yarn install --production
yarn https
热点
,打开cmd,使用ipconfig
查看所有ip地址,使用https://{ip}:3000
访问(一定要加https),选择能够访问到前端的ip地址,假设为ip,打开.env.development
,设置为REACT_APP_SOCKET_URL=https://{ip}:3001
,使用上面一样的命令
运行客户端
https://{ip}:3000
(之前界面不要关闭,因为自己签发的https证书不受信任,关闭之后可能不能连接到服务端),然后登录进去;本地亦是如此
进入客户端或者服务端界面的时候都有可能出现下面的情况,请选择advanced
中的continue
作为一个聊天程序,用户之间需要进行聊天,一个是写死对方的地址,然后直接发送消息,另一个就是通过第三方进行消息的中转,我们只需要知道服务端的地址即可,当然,我们也可以通过服务端知道了对方的地址,然后直接进行通信,本项目采用的是服务端中转
文本,文件,语音只不过发送的数据类型不同罢了,socket.io
支持二进制文件的发送,那么由它转发即可,不过注意设置好缓冲大小,否则容易断开连接
音视频通话使用WebRTC
4,用户A先请求用户B可否进行通话,如果可以,然后在使用RTCPeerConnection
进行连接,将stream
加到对应的video
元素上即可,实际上本项目采用的有两次下面的过程,一次是为了确认用户是否同意,另一次才是实际连接的建立
docker
运行在client 目录下
docker build -t=chat-client .
docker run -p 3000:3000 --name client chat-client
在server 目录下
docker build -t=chat-server .
docker run -p 3001:3001 --name server chat-server
创建成功之后,可在本地进行预览
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184772.html原文链接:https://javaforall.cn