1 Star 0 Fork 87

wen66789 / bzGhost

forked from bzGhost / bzGhost 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

输开源协议

maven最新版本

测试

bzGhost简介

支持所有端的聊天软件,高仿微信,支持文字红包 聊天 ,支持群组建群等功能。全端支持。 bzGhost 打造跨终端跨平台即时通讯,个人也能玩的转的聊天软件。 chatGpt聊天功能,AI客服。

官方网站

http://yuyaogc.com/

版权信息

软件遵循MIT开源协议,意味着您无需支付任何费用,也无需授权,即可将 软件应用到您的产品中。
注意:这并不意味着您可以将软件应用到非法的领域,比如涉及赌博、色情、暴力、宗教等方面。 如因此产生纠纷等法律问题, 作者不承担任何责任。切勿以身试法!!! 网络不是法外之地

功能

1.群组(创建群组,拉人,踢人,禁言,群红包,) 2.私聊 (转账,图片,文字,语音,视频,文件,表情) 3.红包(抢红包,运气红包,口冷红包) 4.通讯录 5.朋友圈 (点赞,评论) 6.商城 (商品列表,商品购买,商品下单) 7.订单 (商品订单,已经支付,完成订单等) 8.客服

产品展示

1.5 账号说明

**注意: 管理员账号:admin / 123456

测试账号:18767176707 / 123456

参考文献

联系方式

  • 如有问题联系作者 微信 18767176707
  • 讨论加群:qq群 [^1]1025293030

技术选型

技术 说明 官网
Electron Electron基于Chromium和Node.js https://www.electronjs.org/
uni-app 使用Vue.js开发手机端应用的框架 https://uniapp.dcloud.io/
Netty 网络应用程序框架 https://netty.io/
Spring Boot 核心框架 https://spring.io/projects/spring-boot/
MyBatis 持久层 https://mybatis.org/mybatis-3/zh/index.html
Redis 缓存 https://redis.io/
Maven 项目构建 https://maven.apache.org/
Mysql 数据库 https://www.mysql.com/
Uview 兼容uni-app https://www.uviewui.com/
iView Vue高质量组件库 http://v1.iviewui.com/
Ignite 以内存为中心的分布式数据库 https://ignite.apache.org/
Zookeeper 中心节点 https://zookeeper.apache.org/
tkmybatis TKMybatis 是基于 Mybatis 框架开发的一个工具

下载


会将各个版本的演示在此展示,目前演示的版本有安卓,电脑,后台管理,其他版本演示将会陆续添加

演示地址

链接 语言 版本 开源
后台管理 Element 1.0.0 100%
安卓端 Uniapp 1.0.0 100%
电脑端 Electron 1.0.0 100%
API Java 1.0.0 100%

账号说明


**注意:
管理员账号:admin /123456

测试账号:test/123456

快速上手

代码结构介绍

  • api-dock 接口文档

  • imApi 后端接口代码

    ​ core 业务核心

    ​ framework 框架

    ​ hnapay 支持

    ​ portal 权限

  • imSocket 后端通信代码

  • vue-admin 后端前端代码

  • vue-app 手机端代码

    首次启动注意事项:

    导入sql 到数据库 ,创建两个库名.

开源部分

https://gitee.com/Huiyun-Co/yiqun.git

http://42.193.146.14:9998/swagger-ui.html#/

bzGhost IM介绍

bzGhost IM 是专门为Web前端开发者打造的IM产品,致力于打造一款天生支持H5、Uniapp和各种小程序,集成简单、高性价比,功能全面、安全可靠的IM。

应用场景

bzGhost IM可以帮助Web前端开发者快速实现私聊、群聊、在线客服等各种场景的IM功能

场景分类 场景
平台互动 站内私信 医患沟通 在线招聘 游戏互动 家校交流 线上课堂
政企办公 政府办公交流 企业工作沟通
社交沟通 兴趣社群 婚恋交友 校园交友 私密交友
在线客服 电商沟通 用户咨询 技术支持

功能特性 {#功能特性}

支持各种消息类型 {#支持各种消息类型}

支持发送文字、表情、图片、语音、和视频消息,也支持开发者根据业务需求实现类似于医生处方、电商订单以及红包等自定义类型消息的发送。

会话列表 {#会话列表}

实时显示最近沟通过的私聊或者群聊会话信息,包括每个会话的未读消息数、最后一条消息的时间和内容,支持会话置顶或会话删除。

消息云端存储 {#消息云端存储}

在任何设备上均可同步拉取云端消息历史记录,支持消息撤回、删除操作。也可以通过Webhook调用开发者设置的回调地址,将消息同步至指定服务器。

通知提醒和离线补发 {#通知提醒和离线补发}

如果用户不在线或网络不稳定,当用户重新上线,系统将自动补发离线期间的消息。
对于微信小程序、Uniapp开发的App,当应用在后台运行或进程被杀掉时,支持通过微信公众号模板消息或手机通知栏推送提醒用户,BzGhost已集成所有主流手机厂商通道:苹果iOS(APNs)、华为、小米、OPPO、VIVO、魅族和Google FCM。

消息已读未读 {#消息已读未读}

支持消息发送方查看消息的已读状态,了解接收方是否已阅读该条消息。

多设备消息同步 {#多设备消息同步}

支持同一用户的消息在多个不同设备(app、小程序和网页)之间保持实时同步,支持一个用户最多8个设备同时在线。

BzGhost IM优势 {#goeasy-im优势}

优势 描述
集成简单 傻瓜式API, 最快半天集成!
高性价比 一次性付费,终身买断。
一对一技术支持 技术人员在线提供1对1技术支持(周一至周五), 紧急事务7 X 24小时电话技术支持
性能卓越 海量用户同时在线, 每秒千万级消息实时必达!
安全私密 独创bzGhost OTP技术结合HTTPS,确保您的数据私密传输
健壮可靠 跨区多活灾备,自动水平扩展,99.95%高可用承诺,完美应对爆发式活动支持

webPacketCode

数据包解码文件


报文格式:magic4字节 + 版本1字节 + 序列化算法1字节 + 指令1字节 + 数据长度4字节 + 数据内容总字节长度 = 11 + 数据内容长度

  • 编码encode
let dataView = new DataView(buffer)

    dataView.setInt32(0, 0x12345678)

    dataView.setInt8(4, packet.version)

    dataView.setInt8(5, 1) // 写死1表示json序列化

    dataView.setInt8(6, packet.command)

    dataView.setInt32(7, bytes.length)

for (let i = 11; i < bytes.length + 11; i++) {
    dataView.setUint8(i, bytes[i - 11])
}
  • 解码decode
let dataView = new DataView(buffer)

let lenght = dataView.getInt32(7)

let bytes = []
for (let i = 11; i < lenght + 11; i++) {
    bytes[i - 11] = dataView.getUint8(i)
}

webIm

通讯文件


  • 分离了API 与webSocket 。
  • 群通道,用户通道。
  • 重试次数,心跳检测,断网重连。
  • 字节传输,支持自定义加密解密等功能。

用户绑定


  • 方法名 login

  • 参数说明

属性名 备注 类型 可选值
userId 用户唯一标识 String 5f6d9d98
groupIds 群组ids Array ["",""]
command 指令集 Number 1
version 版本号 Number 1
  • 示例代码
import webim from '@/util/socket/webim.js';
// 全局初始化
webim.initSocket();

webim.login(userId, groupIds ,command, version, res=>{
    //输出res
});
  • 请求入参
let packet = {
version:1,
command: 1,
userId:"5f6d9d98",
groupIds:["dasdasdsa"]
}
  • 响应参数
let packet = {
version : 1,
command: 2,
errorMsg:"",
success: true
}

发送消息


  • 方法名 sendMessage
  • 参数说明
属性名 备注 类型 可选值
isItMe 发送人 Boolen false/true
contentType 消息类型(文字/图片/语音/视频/红包) Number 0/1/2/3/4/5
content 消息内容 String 测试
createTime 创建时间 Date 2021-11-2
hasBeenSentId 消息id String 1447565
fromUserId 发送人id String 220e805b8521444e9f27d78e45633b44
fromUserName 发送人账户 String test
fromUserHeadImg 发送人图像 String defalut.jpg
userId 当前用户id String 5f6d9d98
toUserId 接收人id String 5f6d9d98
toUserName 接收人账户 String admin
toUserHeadImg 接收人图像 String defalut.jpg
chatType 聊天类型(群/私) Number 1/0
version 版本 Number 1
command 指令集 Number 3
  • 请求入参
let packet = {
    isItMe: true,
    contentType: 0,
    content: "测试",
    createTime: Date.now(),
    hasBeenSentId: Date.now(),
    fromUserId: "5f6d9d98",
    fromUserName: "admin",
    fromUserHeadImg: '/static/image/huge.jpg',
    userId: "5f6d9d98",
    toUserId: "220e805b8521444e9f27d78e45633b44",
    toUserName: "test",
    toUserHeadImg:'/static/image/huge.jpg',
    chatType: 0,
    version : 1,
    command: 3,
};
  • 响应参数
let packet = {
    isItMe: true,
    contentType: 0,
    content: "测试",
    createTime: Date.now(),
    hasBeenSentId: Date.now(),
    fromUserId: "5f6d9d98",
    fromUserName: "admin",
    fromUserHeadImg: '/static/image/huge.jpg',
    userId: "5f6d9d98",
    toUserId: "220e805b8521444e9f27d78e45633b44",
    toUserName: "test",
    toUserHeadImg:'/static/image/huge.jpg',
    chatType: 0,
    version : 1,
    command: 4,
};

指令集参照表

指令集 备注
1 用户绑定请求
2 用户绑定响应
3 发送消息请求
4 发送消息响应

webSocket

长连接封装


封装uni方法

  • 心跳包
  • 断线重连
  • 断线重试
  • 网络检测
  • 自定义报文

initWebSocket(options)


初始化创建一个websocket连接

options参数说明

参数名 类型 说明
url String 服务器地址ws://协议
success Function 接口调用成功回调函数
fail Function 接口调用失败回调函数

示例代码

WEBIM.options = {
    url: 'ws://127.0.0.1',
    success(res) {
        resolve(res);
    },
    fail(e) {
        reject(e);
    }
}

WEBIM.server.initWebSocket(WEBIM.options);

sendWebSocketMsg(options)


通过 WebSocket 连接发送数据,需要先 initWebSocket,并在 _onSocketOpened回调之后才能发送

options参数说明

属性 类型 说明
data ArrayBuffer 服务器发送消息 encode编码
success Function 成功回调函数
fail Function 失败回调函数

示例代码

WEBIM.server.sendWebSocketMsg({
    data: arrayBuffer,
    success(res) {},
    fail(err) {
        // 进行重连
        WEBIM.server._isLogin = false;
        if (WEBIM.server._isReconnection) {
            console.log('网络中断,尝试重连')
            WEBIM.options = {
            url: WEBIM.serverUrl,
            success(res) {},
                fail(err) {}
            }
            WEBIM.server._reConnect(WEBIM.options)
         }
        console.log('【websocket】发送失败,尝试手动重连')
    }
});

onReceivedMsg(callBack)


监听WebSocket接受到服务器的消息事件。

CALLBACK 返回参数

属性 类型 说明
callBack ArrayBuffer 服务器返回消息数据 decode解码

示例代码

WEBIM.server.onReceivedMsg(event => {
    let packet = packetCode.decode(event.data);
    let command = packet.command;
    // 转发事件
    eventDispatcher.dispatchEvent(command, toJSON(packet))
    eventDispatcher.removeListener(command, toJSON(packet))

    if(command === -10){
        store.commit('setNewsPush', packet);
    }
});

Nginx配置文件

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
		charset utf-8;

		location / {
            root   /home/xxxxx//dist;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:9998/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
MIT License Copyright (c) 2020 YiQun Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

支持所有端的聊天软件,高仿微信,用到的技术栈 electron uniapp nvue uni netty java 支持文字红包 聊天 ,支持群组建群等功能。有管理端 安卓端 苹果端 window端 mac端 linux端等。跨平台即时通讯软件,个人玩的转。 支持分布式部署 单机支持百万 通过集群理论能实现PB数据通信 展开 收起
JavaScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/wen66789/yiqun.git
git@gitee.com:wen66789/yiqun.git
wen66789
yiqun
bzGhost
2023

搜索帮助