1 Star 0 Fork 87

战狼-欣 / bzGhost

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

bzGhost像鬼的聊天软件

ci
maven
996.icu

打造跨终端跨平台即时通讯,个人也能玩的转的聊天软件。

版权信息

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

截图

1.3管理截图

联系方式

如有问题联系作者 18767176707

参考文献

下载体验

会将各个版本的演示在此展示,目前演示的版本有H5,安卓,苹果,电脑,其他版本的演示将会陆续添加

1.1 web版本

链接 类型 版本 大小
后台管理 .html 1.0.0 0MB

1.2手机版本

链接 类型 版本 大小
Download .apk 1.0.0 24.2 MB

1.3电脑版本

链接 类型 版本 大小
Download .exe 1.0.0 52.5 MB

1.4账号说明

**注意:
测试账号分别为:admin /123456

通讯底层封装

webim.js

通讯文件

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

1.1 用户绑定

  • 方法名 login

  • 参数说明

属性名 备注 类型 可选值
userId 用户唯一标识 String 5f6d9d98
command 指令集 Number 1
version 版本号 Number 1
  • 请求入参
let packet = {
version:1,
command: 1,
userId:"5f6d9d98"
}
  • 响应参数
let packet = {
version : 1,
command: 2,
errorMsg:"",
success: true
}

1.2 加入群组

  • 方法名 joinGroup
  • 参数说明
属性名 备注 类型 可选值
chatId 聊天对象(群/用户) String 04b09fbee3d24a21a2acedc755d5d7c3
userId 唯一标识 String 5f6d9d98
chatType 聊天类型(群聊/私聊) Number 0/1
command 指令集 Number 7
version 版本号 Number 1
  • 请求入参
let packet = {
    chatId:"04b09fbee3d24a21a2acedc755d5d7c3",
    userId:"5f6d9d98",
    chatType: 0,
    version: 1,
    command: 7
}
  • 响应参数
let packet = {
    version : 1,
    command: 8,
    errorMsg:"",
    success: true
}

1.3 退出群组

  • 方法名 quitGroup
  • 参数说明(参照加入群组)
  • 请求入参
let packet = {
    chatId:"04b09fbee3d24a21a2acedc755d5d7c3",
    userId:"5f6d9d98",
    chatType: 0,
    version: 1,
    command: 9
}
  • 响应参数
let packet = {
    version : 1,
    command: 10,
    errorMsg:"",
    success: true
}

1.4 发送消息

  • 方法名 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.5 指令集参照表

指令集 备注
1 用户绑定请求
2 用户绑定响应
7 加群请求
8 加群响应
9 退群请求
10 退群响应
3 发送消息请求
4 发送消息响应

webPacketCode.js

数据包解码文件

报文格式: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)
}

webSocket.js

封装uni方法 支持心跳包,断线重连,断线重试,网络检测,发送自定义报文。

1.1 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);

1.2 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】发送失败,尝试手动重连')
    }
});

1.3 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);
    }
});

捐赠研发

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 uni netty java 支持文字红包 聊天 ,支持群组建群等功能。有管理端 安卓端 苹果端 window端 mac端 linux端等。跨平台即时通讯软件,个人玩的转。 展开 收起
JavaScript
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

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

搜索帮助