后端开发语言:PHP,
前端开发语言:uniapp混合开发。
集安卓+苹果APP+PC端+H5四合一APP源码
socket推送:GateWayWorker(支持分布式部署,高并发,抗压能力强,未采用第三方付费推送服务)
数据库:mysql
开发工具:hbuiderX,phpstorm
服务器操作系统: Linux Centos 7.x
软件环境: php 5.6 +Apache2.4(或nginx)+MySQL5.6 (推荐使用宝塔)
第三方插件:FFmpeg
无需用到任何第三方付费API
IM部分代码片段展示
const IMSDK = {
$api: null,
init(){
// this.$api = uni.requireNativePlugin('TUICallingUniPlugin-TUICallingModule');
return this;
},
joinRoom(param,cb) { //加入/创建房间
//console.log(param);
//console.log("8888888888")
if(!this.$api)this.init();
this.$api.login({
sdkAppID: param.appid,
userID: param.userid,
userSig: param.usersig
}, ret => {
this.$api.setUserNickname({
nickName: param.myname
},(res) => {
//console.log(11111111111111, JSON.stringify(res))
})
this.$api.setUserAvatar({
avatar: param.myavatar
},(res) => {
//console.log(222222222222222,JSON.stringify(res))
})
if(cb)cb(ret);
})
},
exitRoom(cb){ //离开房间
if(!this.$api)this.init();
// this.$api.logout(cb)
},
logout(cb){
if(!this.$api)this.init();
this.$api.logout(cb)
},
removeUser(userid,cb){ //踢出房间
if(!this.$api)this.init();
this.$api.removeUser({"userid":userid},ret=>{
if(cb)cb();
});
},
muteLocalAudio(mute,cb){ //设置本地音频是否开启,
if(!this.$api)this.init();
this.$api.muteLocalAudio({mute:mute},ret=>{
if(cb)cb();
});
},
setAudioRoute($route,cb){ //设置切换音频通道 //0=>代表扬声器,1=> 听筒
if(!this.$api)this.init();
this.$api.setAudioRoute({route:$route},ret=> {
if(cb)cb();
});
},
muteRemoteAudio(userid,mute,cb){ //禁言mute : 0=>代表禁言,1=> 开启发言
if(!this.$api)this.init();
this.$api.muteRemoteAudio({"userid":userid,mute:mute},ret=>{
if(cb)cb();
});
}
}
export default{
IMSDK
}
性能参考:
同时在线人数受限于服务器内存,一般24G内存服务器可以支持大概120W并发连接。
用户活跃度受限于服务器cpu处理能力,一台24核服务器可以达到45W每秒的吞吐量
一、有群聊、私聊、朋友圈、可以发送文字、语音、视频、图片、表情、红包,转账等。消息可以撤回
二、群组可以设置管理员、可以禁言、踢人,可设置是否可查看用户信息,可@用户、可发群公告等
三、支持扫码入群,可设置好友备注、群名片、消息置顶、消息免打扰、可以邀请好友直接进群等
四、拥有代理功能,支持关键词屏蔽,vip功能,签到功能,支持消息离线推送(ios无需上架,但是签名需支持push,通过APN推送,Android需要上应用商店,否则无法实现离线推送,下单一定要了解好离线消息相关流程)
五、APP端历史聊天记录、图片以及前端程序缓存在本地,页面秒开,支持云端同步聊天记录,断网状态页面之间也可以流畅切换