即时通讯服务 (SignalR版本)
广州市飞时信息科技有限公司
广州市飞时信息科技有限公司
访问由后端请求生成,原则上单位名称、密钥参数不能在前端出现
1. 系统密钥
测试参数:"测试公司": "5D458591-506D-44B5-8E6F-0586CE7DB32B"
2. 获取服务地址
请求接口 /auth/pre-connect , 方式:POST
请求参数:{name:"单位名称",token:"密钥",userid:"用户ID,可以使用固定ID,如果传空值则自动生成"}
返回内容:{server:"服务地址 ,创建链接时需拼上accesstoken",userid,"用户ID",accesstoken:"jwt token"}
3. 创建服务
js/signalr/dist/browser/signalr.js
var connection = new signalR.HubConnectionBuilder().withUrl(`${server}${accesstoken}`).build();
//消息订阅
connection.on("ReceiveMessage", function (userId, userName, message) {
});
//系统消息订阅
connection.on("SystemMessage", function (message) {
});
//欢迎消息订阅
connection.on("Welcome", function (userId, userName, userType, userStatus, channel) {
});
//下线消息订阅
connection.on("Leave", function (userId, userName) {
});
//更改状态消息订阅
connection.on("ChangeStatus", function (userId, status) {
});
//改名消息订阅
connection.on("ChangeName", function (userId, userName, userType) {
});
connection.start().then(function () {
//链接成功,处理函数
}).catch(function (err) {
//链接错误提示
return console.error(err.toString());
});
请求需要在heeders中带上第一步获取到的accesstoken
{ headers: {Authorization: `Bearer ${accessToken}`}
1. 订阅频道
地址 /signal-r/subscr-channel , 方式:POST
请求参数:{channel :"频道名称",username :"用户姓名",usertype:"用户类型",userstatus:"状态值"}
返回内容:无
说明:订阅频道同时更新用户数据,成功后会在频道中发送欢迎消息。如果使用了固定userid且本地订阅的频道与上一次不同,则会先退出上一个频道后再加入新的频道
2. 发送频道消息
地址 /signal-r/send-channelmsg , 方式:POST
请求参数:{channel :"频道名称",message :"消息内容"}
返回内容:无
说明:订阅了频道的用户发送消息
3. 私聊
地址 /signal-r/sendmsg , 方式:POST
请求参数:{receiveuserid :"接收用户ID",message :"消息内容"}
返回内容:无
说明:直接向用户发送消息,用户ID需要访问频道人员信息获取或者系统使用固定userid直接发送
4. 修改状态值
地址 /signal-r/change-status , 方式:POST
请求参数:{channel :"频道名称",status :"状态值"}
返回内容:无
说明:修改当前用户的状态值,成功后会向同一频道用户发送更改状态消息
5. 修改姓名、类型
地址 /signal-r/change-name , 方式:POST
请求参数:{channel :"频道名称"}
返回内容:无
说明:修改当前用户的姓名、类型,成功后会向同一频道用户发送改名消息
6. 获取频道内人员信息
地址 /signal-r/get-channel-users , 方式:POST
请求参数:{channel :"频道名称",name :"姓名",type :"用户类型"}
返回内容: [ {"userId":"用户ID","userName":"姓名","userType":"用户类型","userStatus":"状态值"} ]
说明:post接口直接返回数据,不会发送任何消息
7. 退出频道
地址 /signal-r/leave-channel , 方式:POST
请求参数:{channel :"频道名称"}
返回内容:无
说明:退出频道订阅,成功后会向同一频道用户发送下线消息,并清空本用户的姓名、类型、状态数据