以下为UA的各种方法使用,可结合实际的使用情况来进行加工处理
import { UA, WebSocketInterface } from "jssip";
export default class JsSIPWebphone {
constructor() {
this.ua = "";
this.socket = "";
this.iceServers = "";
}
connect = (options) => {
const socket = new WebSocketInterface(options.host);
const match = options.host.match(/(?<=(ws|wss):\/\/)[^\/]+/);
const host = match && match.length ? match[0] : "";
// console.log(socket, match, host);
this.socket = socket;
socket.via_transport = "WS";
const registerExpires = 300;
const noAnswerTimeout = options.noAnswerTimeout || 60;
const configuration = {
sockets: [socket],
uri: `${options.user}@${host}`,
authorization_user: options.user,
password: options.password,
user_agent: "Webphone / 0.2.0(YSB)",
realm: host,
register: true,
registrar_server: host,
register_expires: registerExpires,
no_answer_timeout: noAnswerTimeout,
};
this.ua = new UA(configuration); // 创建
this.ua.on("connecting", (e) => {
console.log("ua Connecting(传输连接尝试中)........");
});
this.ua.on("connected", (e) => {
console.log("ua Connected(已连接)........");
});
this.ua.on("disconnected", (e) => {
console.log("ua Disconnected(连接失败)........");
});
this.ua.on("registered", (e) => {
console.log("ua Registered(注册成功)........");
});
this.ua.on("unregister", (e) => {
console.log("ua unregister(注销UA)..........");
});
this.ua.on("registrationFailed", (e) => {
console.log("ua Registration Failed(注册失败).........");
});
this.ua.on("registrationExpiring", (e) => {
console.log("ua Registration Expiring(注册到期).........");
});
this.ua.on("newRTCSession", (e) => {
console.log("Webphone newRTCSession.........");
console.log(e);
});
this.ua.on("newMessage", (e) => {
console.log("ua New Message(收到新消息)...........");
});
this.ua.on("sipEvent", (e) => {
console.log("ua Receive Notify Request(sip事件)...........", e);
});
this.register();
this.start();
};
register = () => {
// 注册ua,注意:如果在UA配置参数中将register参数设置为true,UA将自动注册
this.ua.register();
};
start = () => {
// 开始连接
this.ua.start();
};
stop = () => {
// 保存当前注册状态,并断开连接
this.ua.stop();
};
unregister = () => {
// 注销UA
this.ua.unregister({ all: true });
};
registrator = () => {
// 获取 JsSIP.Registrator 注册器实例
this.ua.registrator();
};
call = () => {
// 拨打呼出多媒体电话
const target = ""; // 目的地,URI实例
const options = null; // 参数细节可查看文档
this.ua.call(target, options);
};
sendMessage = () => {
// 使用SIP message方法发送即时消息。
const target = ""; //目的地,URI实例
const body = ""; // 消息内容。表示消息正文的字符串
const options = null; // 参数细节可查看文档
this.ua.sendMessage(target, body, options);
};
terminateSessions = () => {
// 用于呼叫终止的RTCSession。
const options = null;
this.ua.terminateSessions(options);
};
isRegistered = () => {
// 判断是否已注册
this.ua.isRegistered();
};
isConnected = () => {
// 判断是否已连接
this.ua.isConnected();
};
getParameter = () => {
// 检索所配置的参数
this.ua.get("realm");
};
setParameter = () => {
// 修改指定的参数
this.ua.set("reaml", "xxxxxvalue");
};
}
本章节对ua的整体使用进行初步的案例分享,如有不妥之处或者优化建议,还请留言告知,非常感谢!!!