jssip中文开发文档(完整版)截图+文字
jsSip开发文档 (官网地址:http://www.jssip.net/)
完整案例demo下载地址: http://download.csdn.net/download/qq_39421580/10214712
概观:
1.通过WebSocket传输的 SIP。
入门:
一:1.JsSIP用户代理是JsSIP的核心元素。它表示与SIP帐户关联的SIP客户端。JsSIP用户代理是在类中定义的。JsSIP.UA
2.可以创建多个JsSIP用户代理(这对于在同一个Web应用程序中运行不同的SIP帐户很有用)。
二:创建一个jsSIP用户代理
JsSIP用户代理需要一个配置对象来进行初始化。
/*
* 创建websocket连接,连接地址最好是wss,本地测试可以使用ws,
* 如果信令服务使用FreeSWITCH,那么websocket连接地址如下:
* ws://FreeSWITCH所在服务器IP:5066 或
* wss://FreeSWITCH所在服务器IP:7443
*/
var socket = new JsSIP.WebSocketInterface("wss://sip.myhost.com"); //详见三API;
/**
* User Agent配置参数,sockets表示信令服务器的连接集合,即可以
* 注册多个信令服务器;uri即注册用户的SIP地址,password为连接密
* 码;常用的参数还有register(true/false)表示是否直接注册;
* no_answer_timeout无应答超时时间等。
*/
var configuration = {
outbound_proxy_set: "ws://sip-ws.example.com", // freeswitch服务器地址
uri: "sip:alice@example.com",
password: "superpassword",
};
// 使用上述配置创建User Agent
var coolPhone = new JsSIP.UA(configuration);
var socket = new JsSIP.WebSocketInterface("wss://sip.example.com");
var configuration = {
sockets: [socket],
uri: "sip:alice@example.com",
ha1: "350fe29ce3890bd85d105998b0a95cf7",
realm: "sip.example.com",
};
var ua = new JsSIP.UA(configuration);
var options = {
all: true,
};
// HTML5的元素,其中将显示本地和远程视频
var views = {
selfView: document.getElementById("my-video"),
remoteView: document.getElementById("peer-video"),
};
//对所需的调用事件进行回调
var eventHandlers = {
progress: function (data) {
/* Your code here */
},
failed: function (data) {
/* Your code here */
},
confirmed: function (data) {
/* Your code here */
},
ended: function (data) {
/* Your code here */
},
};
var options = {
eventHandlers: eventHandlers,
extraHeaders: ["X-Foo: foo", "X-Bar: bar"],
mediaConstraints: { audio: true, video: true },
pcConfig: {
iceServers: [
{ urls: ["stun:a.example.com", "stun:b.example.com"] },
{ urls: "turn:example.com", username: "foo", credential: " 1234" },
],
},
};
ua.call("sip:bob@example.com", options);
var text = "Hello Bob!";
var eventHandlers = {
succeeded: function (data) {
/* Your code here */
},
failed: function (data) {
/* Your code here */
},
};
var options = {
eventHandlers: eventHandlers,
};
ua.sendMessage("sip:bob@example.com", text, options);
ua.registrator.setExtraHeaders(["X-Foo: bar"]);
setExtraContactParams(extraContactParams);
ua.registrator.setExtraContactParams({
"x-vendor": "FooBar",
verified: true,
});
// => ;x-vendor=FooBar;x-verified
var tones = "1234#";
var extraHeaders = ["X-Foo: foo", "X-Bar: bar"];
var options = {
duration: 160,
interToneGap: 1200,
extraHeaders: extraHeaders,
};
call.sendDTMF(tones, options);
rtcsession.isOnHold()
{
'local': true, // User has put the other peer on hold
'remote': false // Peer hasn't put user on hold
}
rtcsession.isMuted();
{
'audio': true, // Local audio is muted
'video': false // Local audio is not muted
}
var datachannel;
session.on("peerconnection", function (data) {
datachannel = data.peerconnection.createDataChannel("chat");
});
var text = "Hello Bob!";
var eventHandlers = {
succeeded: function (e) {
/* Your code here */
},
failed: function (e) {
/* Your code here */
},
};
var options = {
eventHandlers: eventHandlers,
};
coolPhone.sendMessage("sip:bob@example.com", text, options);
var socket = new JsSIP.WebSocketInterface("ws://sip-ws.example.com");
socket.via_transport = "tcp";
configuration.sockets = [socket];
var ua = new UA(configuration);
var parameters = {
param_name: "param_value",
valueless_param: null,
};
var headers = {
header_name: "header_value",
multi_header: ["multi_header_value1", "multi_header_value2"],
};
var uri = new JsSIP.URI(
"sip",
"alice",
"atlanta.com",
5060,
parameters,
headers
);
uri.toAor(); // Returns "sip:alice@atlanta.com"
uri.toString();
//Returns"sip:alice@atlanta.com:5060;param_name=param_value;valueless_param?Header-Name=
// header_value&Multi-Header=multi_header_value1&Multi-Header=multi_header_value2"
uri.user = "alice";
uri.user; // Returns 'alice'
uri.user = "Alice";
uri.user; // Returns 'Alice'
uri.user = "j@s0n";
uri.toAor(); // Returns 'sip:j%40s0n@atlanta.com'
uri.host = "atlanta.com";
uri.host; // Returns 'atlanta.com'
uri.host = "AtLATta.cOm";
uri.host; // Returns 'atlanta.com'
uri.port = 5060;
uri.port; // Returns 5060
uri.port = "5060";
uri.port; // Returns 5060
uri.setParam("param_name", "param_value");
getParam(key);
uri.getParam("param_name"); // Returns 'param_value'
hasParam(key);
uri.hasParam("param_name"); // Returns true
deleteParam(key);
uri.deleteParam("param_name");
clearParams();
uri.setHeader("header_name", "header_value");
uri.setHeader("header_name", ["header_value1", "header_value2"]);
getHeader(key);
uri.setHeader("header_name", ["header_value1", "header_value2"]);
uri.getHeader("header_name"); // Returns ['header_value1','header_value2']
uri.setHeader("header_name", "header_value");
uri.getHeader("header_name"); // Returns ['header_value']
uri.setHeader("header_name", "header_value");
uri.hasHeader("header_name"); // Returns true