建立连接

注意

访问由后端请求生成,原则上单位名称、密钥参数不能在前端出现

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代码:
1)引用文件

js/signalr/dist/browser/signalr.js

2)创建服务

var connection = new signalR.HubConnectionBuilder().withUrl(`${server}${accesstoken}`).build();

3)订阅消息

                                
//消息订阅
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 :"频道名称"}

返回内容:无

说明:退出频道订阅,成功后会向同一频道用户发送下线消息,并清空本用户的姓名、类型、状态数据