每个企业最多建立20个连接,每个业务标签(businessTag)最多建立一个连接
websocket身份认证分为两种
REST URL
GET https://sdkapi.xylink.com/api/rest/external/{version}/wsToken/enterprise?enterpriseId=XXX&signature=XXX
请求参数说明
参数 | 参数类型 | 参数位置 | 是否必须 | 默认值 | 说明 | 初始平台 |
version | String | Path | 是 | 无 | 传v1即可 | 3.9无此接口 |
enterpriseId | String | Query | 是 | 无 | 企业ID,通过管理平台-云视讯API获得 | |
signature | String | Query | 签名鉴权1.0(旧):是 签名鉴权2.0:否 | 无 | API签名,参考 签名鉴权 |
请求成功结果示例
{
"expireTime": 60,
"wsConnToken": "1174dee9fde341bf9817b0801495eb9b"
}
返回参数说明:
参数 | 说明 |
expireTime | wsConnToken过期时间 (秒) |
wsConnToken | websocket连接token,可使用一次、一分钟过期 |
WSS URL
GET wss://sdk.xylink.com/external/websocket/message?enterpriseId=XXX&wsConnToken=XXX&businessTag=
请求参数说明
参数 | 参数类型 | 参数位置 | 是否必须 | 默认值 | 说明 | 初始平台 |
enterpriseId | String | Query | 是 | 无 | 企业ID,通过管理平台-云视讯API获得 | 5.2最新版 |
wsConnToken | String | Query | 是 | 无 | websocket连接token,可使用一次、一分钟过期 | 5.2最新版 |
businessTag | String | Query | 否 | 无 | 业务标记,用于给会议室分组,会议室分组请参考:回调功能描述 | 5.2最新版 |
GET wss://sdk.xylink.com/external/websocket/message?enterpriseId=XXX&signature=XXX&businessTag=XXX
请求参数说明
参数 | 参数类型 | 参数位置 | 是否必须 | 默认值 | 说明 | 初始平台 |
enterpriseId | String | Query | 是 | 无 | 企业ID,通过管理平台-云视讯API获得 | 3.9最新版 |
signature | String | Query | 是 | 签名鉴权1.0(旧):是 签名鉴权2.0:否 | API签名,参考 签名鉴权 | 3.9最新版 |
businessTag | String | Query | 否 | 无 | 业务标记,用于给会议室分组,会议室分组请参考:回调功能描述 | 3.9最新版 |
消息通信 websocket通信消息结构:
{
"eventType":"REG_EVENT",
"data":{"请参考下面的例子"}
}
参数列表说明
参数名称 | 说明 |
eventType | 响应的具体事件类型,参考eventType取值 |
data | 具体事件的具体消息 |
初始平台:3.9最新版
当每次与服务端建立连接之后,发送PING消息到服务端,服务端会响应PONG消息到客户端,来检测联通性;您需要用此消息机制维护一个心跳机制,防止断连。
请求消息体示例(Json)
{
"eventType":"PING",
"requestId": "请求id,可以取UUID,数据类型为String,当收到PONG时可以定位是哪个PING的返回,可以不传"
}
服务端对PING消息的响应:
{
"eventType":"PONG",
"requestId": "请求id,可以取UUID,数据类型为String,当收到PONG时可以定位是哪个PING的返回,可以不传"
}
初始平台:3.9最新版
注意:是企业级别,不包含ConferenceRosterInfo、NemoHands事件 请求消息体示例(Json)
{
"eventType":"REG_EVENT",
"data":{
"events":["NewUserCall","RecordingStop","TranscodingStatus","LiveStatus","RecordStatus","DecryptStatus"]
}
}
初始平台:3.9最新版
注意:是企业级别,不包含ConferenceRosterInfo、NemoHands事件 请求消息体示例(Json)
{
"eventType":"GET_EVENT"
}
服务端对该事件的响应:
{
"eventType":"EVENTS",
"data":{
"events":["NewUserCall","RecordingStop","TranscodingStatus","LiveStatus","RecordStatus","DecryptStatus"]
}
}
初始平台:3.9最新版
注意:是企业级别,不包含ConferenceRosterInfo、NemoHands事件 请求消息体示例(Json)
{
"eventType":"REMOVE_EVENT",
"data":{
"events":["NewUserCall","RecordingStop","TranscodingStatus","LiveStatus","RecordStatus","DecryptStatus"]
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"REG_ROSTER_EVENT",
"data":{
"confNumber": "9100123456"
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"GET_ROSTER_EVENT"
}
服务端对该事件的响应:
{
"eventType":"ROSTER_EVENTS",
"data":{
"confNumber": ["9100123456"]
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"REMOVE_ROSTER_EVENT",
"data":{
"confNumber": "9100123456"
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"REG_NEMO_HANDS_EVENT",
"data":{
"confNumber": "9100123456"
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"GET_NEMO_HANDS_EVENT"
}
服务端对该事件的响应:
{
"eventType":"NEMO_HANDS_EVENTS",
"data":{
"confNumber": ["9100123456"]
}
}
初始平台:3.9最新版
请求消息体示例(Json)
{
"eventType":"REMOVE_NEMO_HANDS_EVENT",
"data":{
"confNumber": "9100123456"
}
}
添加webSocket库
<dependency>
<groupId>org.java-websocket</groupId>
<artifactId>Java-WebSocket</artifactId>
<version>1.3.8</version>
</dependency
client 类封装
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
public class WsClient extends WebSocketClient {
public WsClient(URI serverUri) {
super(serverUri);
}
@Override
public void onOpen(ServerHandshake arg0) {
System.out.println("握手成功");
}
@Override
public void onClose(int arg0, String arg1, boolean arg2) {
System.out.println("连接关闭");
}
@Override
public void onError(Exception arg0) {
System.out.println("发生错误");
}
@Override
public void onMessage(String arg0) {
System.out.println("收到消息" + arg0);
}
}
调用测试
import org.java_websocket.WebSocket;
import java.net.URI;
public class WsClientTest {
// 根据实际websocket地址更改
private static String url = "wss://sdk.xylink.com/external/websocket/message?enterpriseId=<strong>&signature=</strong>";
public static void main(String[] args){
try {
WsClient myClient = new WsClient(new URI(url));
myClient.connect();
// 判断是否连接成功,未成功后面发送消息时会报错
while (!myClient.getReadyState().equals(WebSocket.READYSTATE.OPEN)) {
System.out.println("连接中···请稍后");
Thread.sleep(1000);
}
myClient.send("{\"eventType\":\"PING\"}");
System.out.println("发送成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}